|
|
1
7
这在网络文件系统上无法可靠地完成。只要您的应用程序是唯一访问该文件的应用程序,最好实现某种协作锁定过程(可能是在打开文件时将锁定文件写入网络文件系统)。然而,不建议这样做的原因是,如果您的进程崩溃或网络崩溃或发生任何其他问题,您的应用程序将进入一个令人讨厌的肮脏状态。 |
|
|
2
4
您可以在要写入的服务器上有一个空文件。 当你想写入服务器时,你可以捕获令牌。只有当你有令牌时,你才应该写入服务器上的任何文件。 当您准备好进行文件操作或抛出异常时,您必须释放令牌。 辅助类可以如下所示
那么,你的操作应该如下
|
|
|
3
3
我发现了这个bug报告,它描述了为什么在file.createNewFile文档中添加了关于文件锁定的注释。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4676183 它指出:
因此,File.createNewFile()不鼓励锁定的主要原因似乎是,如果JVM在您有机会删除之前意外终止,您最终可能会得到孤立的锁文件。如果您可以处理孤立的锁定文件,那么它可以用作一种简单的锁定机制。但是,我不建议使用错误报告注释中建议的方法,因为它在读/写时间戳值和回收过期锁方面有竞争条件。 |
|
|
4
1
与其实施一种锁定策略,该策略很可能依赖于读者遵守您的约定,但不会强迫他们遵守,也许您可以将文件写入一个隐藏或名称模糊的文件,在那里它对读者来说是不可见的。写入操作完成后,将文件重命名为预期的公共名称。 缺点是,在没有额外IO的情况下隐藏和/或重命名可能需要您使用本机操作系统命令,但这样做的过程应该相当简单和确定。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |