gpt4 book ai didi

java - 缓冲写入器和读取器正确的顺序/使用

转载 作者:行者123 更新时间:2023-12-01 11:30:08 24 4
gpt4 key购买 nike

所以我不确定 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 编程社区。

最佳答案

readLine() 可以返回 null,这意味着流结束:在本例中为文件结束。您的代码不允许这种可能性,也不允许在发生这种可能性时向调用者报告这种可能性。

我会完全摆脱readFile()方法,并在其位置调用readLine(),测试结果是否为空,关闭文件并停止读取如果是,否则将该行添加到集合中。

您的异常处理和日志记录也很差。您不断地捕获异常,记录它们,然后继续处理,就好像它们没有发生一样。例如,在 readFile() 中,即使在失败后您也会记录成功。依赖于 try block 中代码成功的代码应该位于同一个 try block 内。

关于java - 缓冲写入器和读取器正确的顺序/使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30471482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com