缓冲的读/写器刷新文件

时间:2013-11-26 20:36:55

标签: java file flush writer

我正在尝试使用给定的方法创建一个替换文件中每一行的方法。相反,它只是使文件为空。小心一看,看看是什么?感谢。

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循环。

2 个答案:

答案 0 :(得分:1)

您在替换模式下打开文件,FileWriter将在写入第一行之前清空文件。如果要追加,请使用FileWriter(file,true)。

第二个问题是你在同一时间阅读和写作。尝试下一个序列:

  1. 阅读整个文件
  2. 替换所有行
  3. 写(替换旧文件)
  4. 因此,您将最大限度地减少问题计数

答案 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