写入文件,但不只是在最后

时间:2013-05-08 08:25:51

标签: java

我想逐行写一些文件。 我有一个问题,这个过程需要花费很多时间并且有时会变得无法解决。当前版本在最后将内容写入文件。是否可以逐行将其写入文件?

E.g。如果我在第4行(400)之后登陆,则该文件当前为空。但是我希望文件中已有4行。

这是我的代码:

String path = args[0];
String filename = args[1];

BufferedReader bufRdr = // this does not matter

BufferedWriter out = null;
FileWriter fstream;
try {
    fstream = new FileWriter(path + "Temp_" + filename);
    out = new BufferedWriter(fstream);
} catch (IOException e) {
    System.out.println(e.toString());
}

String line = null;

try {
    while ((line = bufRdr.readLine()) != null) {            
        // HERE I'm doing the writing with out.write
        out.write(...);
    }
} catch (IOException e) {
    System.out.println(e.toString());
}

try {
    out.close();
} catch (IOException e) {
    System.out.println(e.toString());
}

5 个答案:

答案 0 :(得分:5)

如果要确保已写入编写器的数据进入文件,请使用刷新功能

out.flush()

答案 1 :(得分:3)

out.flush()

之后尝试out.write(...)

答案 2 :(得分:2)

致电out.flush()后使用out.write(...)

答案 3 :(得分:2)

考虑到java文档FileWriter,您可以使用FileWriter直接将文件写入文件,而无需使用BufferedWriter。

另外,正如所指出的,您需要在关闭缓冲区之前刷新数据。函数write仅填充缓冲区,但不会写入磁盘上的文件。此操作通过使用flushclose(将缓冲区的当前内容写入磁盘)完成。这两个函数之间的区别在于flush让你在之后写东西,close肯定会关闭流。

答案 4 :(得分:1)

在out.flush()或out.close()关闭之前,通常不会写入写入缓冲区的数据。所以对于你的要求你应该使用out.flush();