在Java中打开文件时从外部重命名文件

时间:2015-07-31 10:30:35

标签: java file-handling

我正在编写Java应用程序,它必须通读文件。 我正在使用这种方法:

BufferedReader mb_reader = new BufferedReader(new FileReader(f1));
int lines = 0;
while (null != (mb_line = mb_reader.readLine())) {
    lines++;
    //something to do
}

一切正常,但文件可能必须从外部更改(例如)。

我有一个测试文件是否存在的方法然后打开这个阅读器。 但是,如果我现在尝试重命名Windows Explorer中的文件,它只是说该文件是用Java打开的,无法重命名。

有没有办法可以重命名它,即使它被打开了?

3 个答案:

答案 0 :(得分:2)

您需要关闭流以将文件发布到系统,我不认为这是一种直截了当的方式。

你可以有一个工作副本来读取和检查文件,然后进行你可能期望的更改。

答案 1 :(得分:0)

也许你应该首先将文件完全读入StringBuilder或类似文件,如果它不是太大,那么释放它,以便其他线程或进程可以访问它。我的意思是,在完全处理文件时,将文件保持打开状态可以非常快速地读取文件。

答案 2 :(得分:0)

如果在阅读时只需更改文件名但内容保持不变,我会创建该文件的临时副本并从该副本中读取。

这样您就不会锁定原始文件,仍然可以访问内容。