小编典典

尝试写入文件夹时获取“ java.nio.file.AccessDeniedException”

java

由于某种原因,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();
    }

这是错误:

异常: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上的任何文件夹的“只读”检查。


阅读 4121

收藏
2020-09-26

共1个答案

小编典典

好的,事实证明我在做一些愚蠢的事情。我没有将新文件名附加到路径中。

我有

rootDirectory = "C:\\safesite_documents"

但这应该是

rootDirectory = "C:\\safesite_documents\\newFile.jpg"

抱歉,一如既往,这是一个愚蠢的错误。

2020-09-26