Java:使用Scanner和PrintWriter

时间:2016-01-21 19:29:49

标签: java int printwriter

我不确定问题出在哪里但是每次调用ci方法时代码都应该将saveCI变量写入txt文件,覆盖任何以前的int可能或者可能没过。调用loadCI方法时,需要将txt文件中写入的任何int值保存到ci变量,如果txt文件完全为空,则ci应该等于 0 即可。由于某种原因,无论何时调用任何方法都没有发生,txt文件始终保持为空。

以下是代码:

private int ci;
private File ciFile = new File("ci.txt");

private void saveCI(){
    try{
        PrintWriter pw = new PrintWriter(ciFile);           
        pw.write(ci);
        pw.close();
        System.out.println("CI saved");
    }catch(FileNotFoundException e){
        System.out.println("CI save" + e);
    }
}

public void loadCI(){
    try{
        Scanner sc = new Scanner(ciFile);
        if(sc.hasNextInt() == false){
            ci = 0;
        }else{
            ci = sc.nextInt();
        }
        System.out.println("CI loaded");
    }catch(FileNotFoundException e){
        System.out.println("load ci " + e);
    }
}

请记住,在这个类中有更多代码可以从中获取此示例,并且还有另一个类也有很多代码。从其他方法/类调用save和load方法,我省略了其余的代码,因为这里包含太多。我正在尝试实施OO方法。

1 个答案:

答案 0 :(得分:1)

问题是write(int c) PrintWriter方法将其参数解释为一个字符,因此零作为不可见的NUL字符(数值0)写入文件而不是所需的& #39; 0'字符(数值48)。

pw.print(ci)中调用pw.write(ci)代替saveCI()应该可以解决问题。

来源:https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html