file - Java File.setWritable() 并在 JDK 6u18 之后停止正常工作

标签 file permissions java readonly

我们有一个带有特定模块的 Java 应用程序,该模块在执行其功能之前检查临时目录是否“可写”。为了对此进行测试,我们有一个创建新目录的 JUnit 测试,使用 Java File 类方法 setWritable(false) 使目录“不可写”,然后通过该目录到正在测试的模块,并期望得到一个 IllegalArgumentException 返回。这在 JDK 6u18 下已经运行了很长时间。

今天,我已将 JDK 版本更新为 JDK 6u24(Sun 站点截至今天的最新版本)。该单元测试刚开始在新的 JDK 中失败。我在我的团队中四处询问,发现其他人不久前曾尝试在他们的机器上运行 JDK 6u23,并且在相同的 JUnit 测试中遇到了同样的问题(并且仅在该测试中 - 其他一切正常)。

更新到较新的 JDK 后,是否有其他人遇到过 setWritable() 方法的问题?知道如何解决这个问题吗?

在你问之前,我也尝试过使用 setReadonly() 方法作为替代方法,但我得到了相同的结果。

最佳答案

如果您使用的是 Windows,则可能与此错误有关:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6728842

显然 setWritable(false) 从未真正对 Windows 上的目录起作用,因为 readonly 标志实际上并没有使目录只读。

关于file - Java File.setWritable() 并在 JDK 6u18 之后停止正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302269/

相关文章:

c++ - 使用 boost::mapped_region 生成文件以进一步写入?

python - 如何在 django 中编写自定义装饰器?

java - 在 Ruby 中加密并在 Java 中解密 - 为什么它不起作用?

java - 在享元模式中将静态实例分配给非静态实例

Android 11 无法获取文件路径

java - PDFBox 2.0 创建签名字段并使用已签名的文档保存增量

c - 二进制文件模式

Git复制文件保存历史

python - 我可以用 Python 在一行中读写文件吗?

linux - 目录本身的 ACL