【发布时间】:2012-06-18 14:22:30
【问题描述】:
我想知道如果我尝试在 Java 中读取可能被其他进程修改的文件会发生什么。例如给出伪代码:
File f = new File("a");
if (f.exists()) {
// A
BufferedReader br = new BufferedReader(new FileReader(f));
// B
String line = "";
while ((line = br.readLine() ) != null ) {
// C
out.println(line);
}
}
如果在那些注释的地方 (A/B/C) 文件名已被另一个进程更改,会发生什么情况?如果文件被删除或替换为另一个文件会有所不同吗?如果实现了不同类型的 od 文件读取,是否会受到影响?
【问题讨论】:
-
其他进程是你可以控制的吗? (是你写的可以修改的代码吗?)
-
通常操作系统不会让进程 A 修改进程 B 打开的文件。此外,如果您想这样做,请检查进程间通信/同步,以便 N 个进程可以安全地修改相同的数据结构。