在java中是否有任何方法可以读取文件的内容,在关闭之前由另一个处理程序更新?
答案 0 :(得分:4)
这取决于操作系统。
传统上,POSIX-y操作系统(Linux,Solaris,...)对于读取和写入都是开放的文件完全没有问题,即使是通过单独的进程(它们甚至支持在从中读取文件时删除文件)和/或写入)。
在Windows中,更常见的方法是独占打开文件(与普通人相反,Windows 支持非独占文件访问,应用程序很少使用它)。
Java无法指定您希望访问文件的方式 * ,因此使用平台默认值(Linux / Solaris上的共享访问权限,Windows上的独占访问权限)。
* 对于Java 7中的NIO和新NIO,这可能是错误的,但我不是NIO的大专家。
答案 1 :(得分:2)
理论上它很容易做到,但是文件并不是为了以这种方式交换数据而设计的,并且根据您的要求,正确处理它可能非常棘手。这就是没有通用解决方案的原因。
e.g。如果你想在另一个进程写入文件时读取文件,即使编写器还没有完成,阅读线程也会看到一个EOF。您必须重新打开该文件并跳到上次读取文件的位置并继续。写作线程可能会滚动正在写入的文件,这意味着读取必须检测并处理它。
您想要做什么特异性?