![]() |
2
1
我不知道这是否适用,但如果您在纯Vista/Windows Server 2008解决方案中运行,我会使用TxF(事务性NTFS),然后确保您通过JNI调用适当的文件API来打开文件句柄并执行文件操作。 如果这不是一个选项,那么我认为您需要一种所有客户端都可以访问的服务,它负责协调文件的读/写。 |
![]() |
3
1
在Unix系统上,我会删除该文件,然后打开它进行写入。任何打开它阅读的人都会看到旧的,一旦他们都关闭了它,它就会从文件系统中消失。我不知道NTFS是否有类似的语义,尽管我听说它完全基于BSD的文件系统,所以可能是这样。 |
![]() |
4
1
无论是什么操作系统等,应该始终有效的东西正在改变您的客户端软件。 如果这是一个选项,那么您可以拥有一个文件“settings1.ini”,如果您想更改它,您可以创建一个文件“settings2.ini.wait”,然后将您的内容写入其中,然后将其重命名为“settings2.ini”,然后删除“settings1.ini”。 如果上次读取了settings1.ini,则更改后的客户端软件将始终检查settings2.ini,反之亦然。
|
![]() |
5
0
可能不需要锁定。我不太熟悉Windows上的FS API,但由于NTFS同时支持硬链接和软链接,因此,如果您的设置允许,您可以尝试以下方法: 使用硬链接或软链接指向实际文件,并对文件进行不同的命名。允许每个人使用链接的名称访问该文件。 在同一文件夹中以其他名称写入新文件。
然而,我不知道如何在Java中创建链接。也许你必须使用一些本地API来实现这一点。 我希望这能有所帮助。 |
![]() |
6
-1
我最近一直在处理类似的事情。如果运行java 5,也许您可以考虑使用NIO文件锁与ReNeReTrAdRead?确保所有引用FileChannel对象的代码也引用ReentrantReadWriteLock。这样,NIO将它锁定在每VM级别,而可重入锁将它锁定在每线程级别。
当然,需要进行一些异常处理。 |