【问题标题】:Unexpected behavior for Files.isWritable [closed]Files.isWritable 的意外行为 [关闭]
【发布时间】:2020-10-12 05:46:23
【问题描述】:

如果文件位于网络上(直接访问或通过映射驱动器访问),Windows 机器上的Files.isWritable 始终为 false。

但是:

  1. 文件有写权限。
  2. FileUtils.writeStringToFile 成功写入此文件,没有给出任何错误。 (https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeStringToFile-java.io.File-java.lang.String-java.lang.String-)

是否有更好的 API 可以为网络上的文件提供更可靠的结果/权限?

【问题讨论】:

  • 请参阅stackoverflow.com/questions/35082228/…,这可能会有所帮助。您还应该将文件具有的确切权限添加到您的问题中,并告诉我们您的程序正在运行的用户。

标签: java nio


【解决方案1】:

如果可以的话,我建议你升级 JDK。 Files.isWritable 报告了几个错误 - 例如this 和相关错误,其中一个可能是您的问题的原因。

我在使用 JDK11 时注意到了类似的问题,并为我的特殊情况添加了这个临时解决方法。升级到 JDK14/15 后,我删除了解决方法:

public static boolean isWritable(Path path)
{
    boolean writable = Files.isWritable(path);
    if (!writable)
    {
        writable = path.toFile().canWrite();
    }
    return writable;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2012-05-19
    相关资源
    最近更新 更多