我正在编写两个通过文本文件进行通信的程序。第一个程序写入文件,第二个程序读取文件。但是,当读取器程序尝试从文件中读取而写入器仍在写入并读取不一致的数据时,就会出现问题。有没有办法同步两个不同 JVM 的读/写?
最佳答案
经常使用的简单解决方案:
- 将文本写入到文件中,其名称与读者预期的名称不同。例如,如果预期的文件名是
abc.txt
,则写入名为abc.txt.temp
的文件。 - 写入完成后,将文件重命名为其预期名称。在大多数(尽管这是与平台相关的)文件系统上,同一目录中的文件重命名是原子的 - 它将立即发生。因此,在本例中,重命名是从
abc.txt.tmp
到abc.txt
。您可以使用java.io.File.renameTo
或java.nio.Files.move
方法进行重命名。
读者将只能看到 abc.txt
中完整写入的文件。
关于java - Java中不同程序的并发读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754965/