由于某种原因,java.nio.file.AccessDeniedException每次尝试使用Tomcat上的java webapp写入计算机上的文件夹时,我都会不断获取信息。此文件夹的权限设置为对我的计算机(Windows)上的每个人都完全控制。有人知道我为什么会得到这个例外吗?
java.nio.file.AccessDeniedException
这是我的代码:
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)。 Java上的sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)上的nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)在Java上的sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230) .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上的任何文件夹的“只读”检查。
好的,事实证明我在做一些愚蠢的事情。我没有将新文件名附加到路径中。
我有
rootDirectory = "C:\\safesite_documents"
但这应该是
rootDirectory = "C:\\safesite_documents\\newFile.jpg"
抱歉,一如既往,这是一个愚蠢的错误。