所以我不确定我的错误在于BufferedWriter和BufferedReader的顺序/使用。你自己看。 我的程序除了这些方法外都可以工作。这是我宣称的东西,非常肯定错误不在这里。
fw = new FileWriter(file, true);
bw = new BufferedWriter(fw);
fr = new FileReader(file);
br = new BufferedReader(fr);
现在这里是向文件添加东西的方法,非常确定这个方法有效:
public static void addStuff(String toAdd){
f.format("%s ", toAdd);
try {
bw.write(toAdd);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error at addstuff");
}
System.out.printf("%s added", toAdd);
System.out.println();
}
最后但并非最不重要的是,我很确定我做错了。这个读取刚刚添加到的文件。
public List<String> readFile(){ //return a list off stuff
try{
String line = br.readLine();
stuff.add(line);
}
catch(IOException ioe){
System.out.println("Error at readFile");
}
return stuff;
}
我遇到的错误是当readFile()方法读取文件时,打印出“null”,因此程序无法正确读取或正确写入。 就像这样:
hi added
null
非常感谢,在这里热爱java编程社区。
答案 0 :(得分:1)
readLine()
可以返回null,这意味着流结束:在这种情况下,文件结束。您的代码不允许这种可能性,并且它也不允许在调用者发生时向调用者报告该可能性。
我会完全摆脱readFile()
方法,并在其位置调用readLine(),
测试结果为null,关闭文件并停止读取(如果是这样),否则将该行添加到集合中。
您的异常处理和日志记录也很差。您始终捕获异常,记录异常,然后继续进行,就好像它们没有发生一样。例如,在readFile(),
中,即使发生故障,您也会记录成功。取决于try块中代码成功的代码应该在同一个try块内。