One*_*Two 48 java io file-io access-denied
出于某种原因,java.nio.file.AccessDeniedException
每次我尝试使用Tomcat上的java webapp写入计算机上的文件夹时,我都会收到这些信息.此文件夹的权限设置为对我计算机上的所有人(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();
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
异常: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.位于sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)的sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)中的nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) .nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430)位于java.nio.file.Files.write的java.nio.file.Files.newOutputStream(Files.java:172)中(Files.java:3092) )
可能的原因:在超级用户上看到我的帖子,关于如何取消选中Windows 7上我的任何文件夹的"只读".尽管所有文件夹都不是只读给java以外的任何文件夹.
One*_*Two 73
好吧,事实证明我做了一些愚蠢的事情.我没有将新文件名附加到路径中.
我有
rootDirectory = "C:\\safesite_documents"
Run Code Online (Sandbox Code Playgroud)
但应该是
rootDirectory = "C:\\safesite_documents\\newFile.jpg"
Run Code Online (Sandbox Code Playgroud)
对不起,这是一个愚蠢的错误.