Java 写入文件,但不只是在结尾

Java 写入文件,但不只是在结尾,java,Java,我想把一些东西逐行写入文件。 我有一个问题,这个过程需要很多时间,有时会被取消。当前版本在结尾处将内容写入文件。可以逐行写入文件吗 例如,如果我在第4行(共400行)后插入abboard,则文件当前为空。但是我想在文件中已经有4行了 这是我的密码: String path = args[0]; String filename = args[1]; BufferedReader bufRdr = // this does not matter BufferedWriter out = null

我想把一些东西逐行写入文件。 我有一个问题,这个过程需要很多时间,有时会被取消。当前版本在结尾处将内容写入文件。可以逐行写入文件吗

例如,如果我在第4行(共400行)后插入abboard,则文件当前为空。但是我想在文件中已经有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());
}

out.flush()之后尝试
out.flush()
写入(…)

如果要确保已写入写入写入器的数据进入文件,请使用flush函数

out.flush()

使用
out.flush()
调用
out.write(…)
考虑到java文档,您可以使用FileWriter直接将内容写入文件,而无需使用BufferedWriter


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

在out.flush()或out.close()关闭之前,通常写入缓冲区的数据实际上不会被写入。因此,对于您的需求,您应该使用out.flush()

刷新流以将内容保存到文件。尽管不建议继续冲洗溪流。更好的方法是设置一个行的阈值(比如每50行之后),在该点之后刷新。另一个注意事项是,如果您还没有注意到它,则需要在使用bufRdr之前初始化它。