问题描述
如果文件位于网络上(直接访问或通过映射的驱动器访问),Windows机器上的
Files.isWritable
总是错误。
但是:
- 文件具有写权限。
-
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可以为网络上的文件提供更可靠的结果/权限?
解决方法
如果可以的话,我建议您升级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;
}