Java 缓冲读写器刷新文件
我试图创建一个方法,用给定的值替换文件中的每一行。相反,它只是使文件为空。想看看有什么事吗?谢谢Java 缓冲读写器刷新文件,java,file,flush,writer,Java,File,Flush,Writer,我试图创建一个方法,用给定的值替换文件中的每一行。相反,它只是使文件为空。想看看有什么事吗?谢谢 try { FileReader fr = new FileReader(chooser.getSelectedFile()); BufferedReader reader = new BufferedReader(fr); FileWriter fw = new FileWriter(chooser.getSelectedF
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循环。您在替换模式下打开文件,您的FileWriter
将在写入第一行之前清空文件。如果要追加,请使用FileWriter(file,true)
第二个问题是你同时阅读和写作。尝试下一个序列:
因此,您将最小化问题计数如果您想用新行覆盖同一文件,您应该首先进行所有读取,然后进行所有写入
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
ArrayList line=new ArrayList();
//启动读卡器,检查每一行
while(行!=null){
字符串换行=//对行进行更改
行。添加(换行符);
}
//近距离阅读
//起始编写器
//将每一行写入文件
可能无法回答您的确切问题,但为什么不只计算文件中的行数并用新行覆盖文件?您正在尝试读取
和写入
e到同一文件。取而代之的是创建新的文件并编写替换的text.noMAD,在未来它将不断发展,所以我将以“艰难的方式”这样做。斯密特,这也许是一个很好的观点,但没有办法在一个文件中完成它吗?我被你使用的扫描仪所吸引。让扫描器
读取源文件本身要简单得多,而不是每行创建一个新的源文件,但无论如何,对其调用toString()
有什么意义呢?为什么要在文件中以未指定的格式存储?@VitalijKornijenko如果不需要实际文件,则可以删除该文件。如果您仍然想坚持将所有内容都放在一个文件中的想法,那么请读取所有内容并将其存储到某个位置,最好是将其存储到ArrayList
,然后替换内容并将其写入文件。