我不确定问题出在哪里但是每次调用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方法。
答案 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