gpt4 book ai didi

java - 如果使用 Files.find(),则出现 AccessDeniedException

转载 作者:行者123 更新时间:2023-12-02 09:41:20 24 4
gpt4 key购买 nike

我需要找到目录中的所有匹配文件并获取一些信息(例如unix权限)。

如果我尝试使用 Files.find() 方法,它可以工作,但有些文件或目录会导致 AccessDeniedException

例如

try (Stream<Path> stream = Files.find(Paths.get("/etc/cups/ssl"), 1, (p, bfa) -> true)) {
stream.forEach(p -> {
try {
PosixFileAttributes attr = Files.readAttributes(p, PosixFileAttributes.class);
System.out.println(attr.permissions());
} catch (IOException e) {}
});
}

返回:

Exception in thread "main" java.nio.file.AccessDeniedException: /etc/cups/ssl
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:428)
at java.base/java.nio.file.Files.newDirectoryStream(Files.java:471)
at java.base/java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:300)
at java.base/java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322)
at java.base/java.nio.file.FileTreeIterator.<init>(FileTreeIterator.java:71)
at java.base/java.nio.file.Files.find(Files.java:3937)
at unix.utils.UnixFile.main(UnixFile.java:2371)

Process finished with exit code 1

但是对相同文件使用进程和命令可以正常工作,没有任何异常

String[] command = { "/bin/sh", "-c", "/bin/ls -ldA /etc/cups/ssl" };
Process process = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}

返回:

drwx------ 2 root lp 4096 Feb 16 16:48 /etc/cups/ssl

Process finished with exit code 0

使用Files.find()时出现异常是什么原因?我不更改文件,不移动,只是获取一些属性信息

最佳答案

我知道问题是什么了。当我使用该过程时,我只获取了目录属性并没有进入其中。但在文件示例中,我不仅获取目录,还尝试进入内部,因为 maxdepth 设置为 1。需要将 maxdepth 设置为 0 以仅检查此目录而不进入。

关于java - 如果使用 Files.find(),则出现 AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57045192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com