在 Guava 10+ 中,Google 已弃用文件.deleteDirectoryContents() https://google.github.io/guava/releases/10.0/api/docs/com/google/common/io/Files.html#deleteDirectoryContents(java.io.File)。 JavaDoc 说
已弃用。该方法存在不良的符号链接检测和竞争问题
状况。此功能只能由以下人员适当支持
shell 到操作系统命令,例如 rm -rf 或 del /s。
该方法计划在 Guava 版本中从 Guava 中删除
11.0
我对为什么存在竞争条件感到困惑。我认为这种方法实际上很有用,并且发现向操作系统进行脱壳是一个糟糕的解决方案。作者能否分享为什么做出这个决定?
我对为什么存在竞争条件感到困惑。
例如,假设一个线程调用Files.deleteDirectoryContents()
第二个线程(或外部进程)同时在目录中创建一个新文件。
当您从通话中返回时,您可以相信该目录是空的吗?没有!
无论如何,如果您发现此方法的功能很有用......尽管它有缺陷......您可以自由地获取代码的副本,对其进行调整并将其嵌入到您的应用程序中。 (只需检查 Guava 源代码许可证并确保您遵守它。)
作者能否分享为什么做出这个决定?
我认为他们已经这样做了;请参阅弃用通知。如果您想要更多信息,请尝试搜索问题跟踪器和 Guava 讨论组。您甚至可以尝试在讨论组中礼貌地提问,但如果您的议程是改变他们的想法,我怀疑您是否会成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)