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 方法。
问题是 PrintWriter
的 write(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
我不确定问题出在哪里,但代码应该在每次调用 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 方法。
问题是 PrintWriter
的 write(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