Java - 如何同时读写文件?

时间:2011-07-27 09:22:50

标签: java file

在java中是否有任何方法可以读取文件的内容,在关闭之前由另一个处理程序更新?

2 个答案:

答案 0 :(得分:4)

这取决于操作系统。

传统上,POSIX-y操作系统(Linux,Solaris,...)对于读取和写入都是开放的文件完全没有问题,即使是通过单独的进程(它们甚至支持在从中读取文件时删除文件)和/或写入)。

在Windows中,更常见的方法是独占打开文件(与普通人相反,Windows 支持非独占文件访问,应用程序很少使用它)。

Java无法指定您希望访问文件的方式 * ,因此使用平台默认值(Linux / Solaris上的共享访问权限,Windows上的独占访问权限)。

* 对于Java 7中的NIO和新NIO,这可能是错误的,但我不是NIO的大专家。

答案 1 :(得分:2)

理论上它很容易做到,但是文件并不是为了以这种方式交换数据而设计的,并且根据您的要求,正确处理它可能非常棘手。这就是没有通用解决方案的原因。

e.g。如果你想在另一个进程写入文件时读取文件,即使编写器还没有完成,阅读线程也会看到一个EOF。您必须重新打开该文件并跳到上次读取文件的位置并继续。写作线程可能会滚动正在写入的文件,这意味着读取必须检测并处理它。

您想要做什么特异性?