我有一个Java应用程序,可以在给定位置写入文件。 在写之前,我正在使用 Files.isWritable(path)检查提供的路径是否可写。
当用户提供网络共享驱动器中存在的文件夹的路径时。 然后获取 AccessDeniedException 。
不知道发生了什么,我是否错过了什么。因为我能够在共享驱动器上创建/编辑/删除文件和文件夹。
但是Java应用程序无法执行此操作。
在搜索一些答案时发现了这一点 https://bugs.openjdk.java.net/browse/JDK-8034057 不知道它是否与我的问题有关。
有人可以帮助我解决这个问题,并告诉我怎么了。
还与网络团队联系过。我对共享驱动器具有完全的读写权限。
Java版本1.8.0_191
OS- Win 7企业版
这是我要检查的代码
private static boolean isWritable(Path path)
{
if(Files.isWritable(path))
{
return true;
}
else
{
try (FileChannel fc = FileChannel.open(path, StandardOpenOption.WRITE))
{
// NOP
}
catch(IOException e)
{
if(LOGGER.isDebugEnabled())
{
LOGGER.debug("", e);
}
return false;
}
return true;
}
}
附加图像。所以基本上我不能在4个共享驱动器中的任何一个(即I / O / R / S驱动器)中创建文件,但是我可以在C / D驱动器中创建。手动我可以,但是使用Java程序却不能。