爪哇。更新(重写)共享文件
Posted
技术标签:
【中文标题】爪哇。更新(重写)共享文件【英文标题】:Java. Update (rewrite) shared file 【发布时间】:2020-08-06 15:22:27 【问题描述】:我有一个可以通过网络访问的共享文件。该文件具有直接链接并且几乎永久下载,因此它总是被锁定以供阅读。但有时我需要使用 java 代码用新数据更新这个文件,但我做不到。 我想知道如何实现这一目标的方法、原则和最佳实践。也许我应该使用控制器而不是直接链接来放置一些逻辑来创建副本以供阅读,但是副本在阅读时也需要更新。连接中断是不可取的。有什么想法吗???
【问题讨论】:
【参考方案1】:嗨@MichaelD 为什么不使用 mv 命令?您可以像 new.tmp 一样创建新文件,但是请使用“mv new.tmp original.txt”来更新文件,mv 是原子的,所以这应该可以按您的预期工作
【讨论】:
我通过代码更新文件。首先我收集数据,然后放入文件。在解锁之前我将无法更新文件。正如我所说,它几乎总是被锁定 您不能用您的程序读取锁定的文件,执行您的处理并创建一个新的 tmp 文件,然后使用 mv 将现有文件(您要更新的文件)替换为 tmp 文件。通过这样做,文件不会被“更新”,而是被替换 例如存在读取此文件的连接。而且这个文件比较大。并且操作系统不会让我替换被锁定的文件。已经有例外说明了这一点。我认为问题更多是关于接受连接时的文件管理。就像创建新副本然后清理未使用的副本一样。我考虑使用控制器逻辑而不是直接链接,所以我可以管理文件副本以上是关于爪哇。更新(重写)共享文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 SPSecurity.RunWithElevatedPrivileges 更新共享点用户配置文件属性