出于某种原因,每次我尝试使用 Tomcat 上的 java webapp 写入计算机上的文件夹时,我都会不断收到 java.nio.file.AccessDeniedException
。此文件夹的权限设置为对我计算机上的每个人 (Windows) 进行完全控制。有人知道我为什么会得到这个例外吗?
这是我的代码:
public void saveDocument(String name, String siteID, byte doc[]) {
try {
Path path = Paths.get(rootDirectory + siteID);
if (Files.exists(path)) {
System.out.println("Exists: " + path.toString());
Files.write(path, doc);
} else {
System.out.println("DOesn't exist");
throw new Exception("Directory for Site with ID " + siteID + "doesn't exist");
}
} catch (FileSystemException e) {
System.out.println("Exception: " + e);
e.printStackTrace();
} catch (IOException e ) {
System.out.println("Exception: " + e);
e.printStackTrace();
} catch (Exception e) {
System.out.println("Exception: " + e);
e.printStackTrace();
}
这是错误:
异常:java.nio.file.AccessDeniedException: C:\safesite_documents\site1 java.nio.file.AccessDeniedException: C:\safesite_documents\site1 at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83) at sun。 nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) 在 sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) 在 sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230) 在 java .nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430) 在 java.nio.file.Files.newOutputStream(Files.java:172) 在 java.nio.file.Files.write(Files.java:3092) )
可能的原因: 请参阅我在 supersuser 上的帖子,了解我如何无法取消选中 Windows 7 上任何文件夹的“只读”。即使所有文件夹都不是只读到 java 之外的任何文件夹。
原文由 OneTwo 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,事实证明我在做一些愚蠢的事情。我没有将新文件名附加到路径中。
我有
但它应该是
对不起,这是一个愚蠢的错误。