【发布时间】:2015-01-05 08:45:40
【问题描述】:
是否可以同时从两个或多个不同的进程中读取同一个文件?
我想在 Java 应用程序中做这样的事情:
final File f = new File("read-only-file");
final FileInputStream in = new FileInputStream(f);
int b;
while((b = in.read()) != null) {
//process b
Thread.sleep(10); //several read processes would really happen at the same time
}
没有应用程序会写入文件,但多个线程/应用程序需要同时执行上述代码。上面的代码可以吗,还是在这种情况下我需要使用任何特殊机制?
此外,该解决方案应该独立于平台,并且必须在类似 Linux 的系统上运行。
【问题讨论】:
-
你可以相对容易地尝试一下,但答案是肯定的。
-
@SotiriosDelimanolis 那么请写一个答案,以便我可以接受。
-
它可能会让你的 HDD 发疯 - 除非你有 SSD 或某种 RAID。
-
@BoristheSpider 你对 fs 缓存有什么看法?
-
@fge 取决于我想的文件大小。
标签: java linux file concurrency io