微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试遍历文件时获取 java.nio.file.AccessDeniedException

如何解决尝试遍历文件时获取 java.nio.file.AccessDeniedException

我正在尝试使用此代码打印目录及其子目录中的所有文件,有时会出现异常 java.nio.file.AccessDeniedException。在我的例子中,我试图遍历我的 DropBox 程序文件,当然有些文件可能受到保护。有没有办法通过检查文件是否可访问来绕过此错误?我尝试捕获错误检查文件是否可读,但我尝试过的一切都没有奏效。谢谢!

public class TraverseDirectory {

    private final Queue<File> queue;

    public TraverseDirectory(String inputDir) throws IOException {
        queue = new LinkedList<File>();
        Path dir = Paths.get(inputDir);
        Files.walk(dir).forEach(path -> traverse(path.toFile()));
        while(!queue.isEmpty()){
            System.out.println(queue.poll());
        }
    }
    private void traverse(File file) {
        if(file.isFile()){
            queue.add(file);
        }
    }
}

线程“main”中的异常 java.io.UncheckedioException: java.nio.file.AccessDeniedException: C:\Program Files (x86)\DropBox\CrashReports 在 java.base/java.nio.file.filetreeIterator.fetchNextIfNeeded(filetreeIterator.java:87) 在 java.base/java.nio.file.filetreeIterator.hasNext(filetreeIterator.java:103) 在 java.base/java.util.Iterator.forEachRemaining(Iterator.java:132) 在 java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) 在 java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) 在 java.base/java.util.stream.AbstractPipeline.wrapAndcopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) 在 java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) 在 TraverseDirectory.(TraverseDirectory.java:19) 在 Main.main(Main.java:11) 引起:java.nio.file.AccessDeniedException: C:\Program Files (x86)\DropBox\CrashReports 在 java.base/sun.nio.fs.WindowsException.translatetoIOException(WindowsException.java:89) 在 java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) 在 java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) 在 java.base/sun.nio.fs.WindowsDirectoryStream.(WindowsDirectoryStream.java:86) 在 java.base/sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:520) 在 java.base/java.nio.file.Files.newDirectoryStream(Files.java:476) 在 java.base/java.nio.file.filetreeWalker.visit(filetreeWalker.java:300) 在 java.base/java.nio.file.filetreeWalker.next(filetreeWalker.java:373) 在 java.base/java.nio.file.filetreeIterator.fetchNextIfNeeded(filetreeIterator.java:94) ……还有 11 个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。