Java:使用 Scanner 和 PrintWriter 将 int 值读取和写入文件

Java: reading and writing int values to a file using Scanner and PrintWriter

我不确定问题出在哪里,但代码应该在每次调用 saveCI 方法时将 ci 变量写入 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);
    }
}

请记住,从中获取此示例的 class 中有更多代码,还有另一个 class 中也包含大量代码。保存和加载方法被调用来自其他 methods/classes,我省略了其余代码,因为这里要包含的内容太多了。我正在尝试练习 OO 方法。

问题是 PrintWriterwrite(int c) 方法将其参数解释为一个字符,因此零作为不可见的 NUL 字符(数值 0)而不是所需的“0”字符(数值 48)。

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

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