我正在尝试使用给定的方法创建一个替换文件中每一行的方法。相反,它只是使文件为空。小心一看,看看是什么?感谢。
try {
FileReader fr = new FileReader(chooser.getSelectedFile());
BufferedReader reader = new BufferedReader(fr);
FileWriter fw = new FileWriter(chooser.getSelectedFile());
BufferedWriter bw = new BufferedWriter(fw);
String line = reader.readLine();
Scanner scan = null;
int i=0;
while (line != null) {
scan = new Scanner(line);
ln = scan.toString() + add;
bw.write(ln);
bw.newLine();
i++;
System.out.println(i + " pass");
line = reader.readLine();
}
reader.close();
bw.close();
} catch (FileNotFoundException e) {
System.out.println("Can't find the file");
} catch (IOException e) {
System.out.println("Dude, it's impossibru to read.");
}
此方法中的i
也看到程序通过while
循环传递了多少次,在本例中为0,它根本不会启动while循环。
答案 0 :(得分:1)
您在替换模式下打开文件,FileWriter
将在写入第一行之前清空文件。如果要追加,请使用FileWriter(file,true)。
第二个问题是你在同一时间阅读和写作。尝试下一个序列:
因此,您将最大限度地减少问题计数
答案 1 :(得分:1)
如果你想用你的新行覆盖同一个文件,你应该首先阅读所有的阅读,然后是所有的写作。
ArrayList<String> lines = new ArrayList<String>();
//start reader, go over each line
while (line != null) {
String newLine = //make changes to line
lines.add(newLine);
}
//close reader
//start writer
//write each line to file