Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试递归打印给定目录中的所有文件路径时出错_Java_File - Fatal编程技术网

Java 尝试递归打印给定目录中的所有文件路径时出错

Java 尝试递归打印给定目录中的所有文件路径时出错,java,file,Java,File,我正在尝试递归打印目录中的所有文件路径 try { Files.walkFileTree(Utils.getContentDirectory().toPath(), new SimpleFileVisitor<Path>() { //**Exception here** @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOExcepti

我正在尝试递归打印目录中的所有文件路径

try {
  Files.walkFileTree(Utils.getContentDirectory().toPath(), new SimpleFileVisitor<Path>() { //**Exception here**

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                
      Utils.log(file.toString());    
      return FileVisitResult.CONTINUE;

    }  
  });
} catch (IOException e) {
  e.printStackTrace();
}
public static File getContentDirectory() {
    return new File(UltimateBugTracker.class.getClassLoader().getResource("resources/html/index.html").getFile()).getParentFile();
}
但不管出于什么原因,它抛出了这个异常

线程“main”java.nio.file.InvalidPathException中的异常:索引4处的非法字符:文件:\C:\Users\raz\Desktop\WebServer.jar\资源\html


这没有意义,因为我正在使用内置的
fileInstance.toPath()
方法获取路径。我不明白为什么它说这是一个无效的路径。

您传递的不是一个有效的walkFileTree路径,而是一个jar中资源的URI。希望这个示例能够更清楚地说明如何遍历jar中的资源,而不是目录中的文件:

public static void main(String[] args) throws IOException
{
    var jar = Path.of("C:\\Users\\raz\\Desktop\\WebServer.jar");

    System.out.println("isRegularFile()="+Files.isRegularFile(jar));

    FileVisitor<? super Path> visitor = new FileVisitor<Path>()
    {
        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException
        {
            System.out.println("dir START "+dir);
            return FileVisitResult.CONTINUE;
        }
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException
        {
            System.out.println("file "+file);
           return FileVisitResult.CONTINUE;
        }
        public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException
        {
            System.out.println("file fail "+file);
            return FileVisitResult.CONTINUE;
        }
        public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException
        {
            System.out.println("dir END "+dir);
            return FileVisitResult.CONTINUE;
        }
    };

    try (FileSystem fs = FileSystems.newFileSystem(jar))
    {
        Path path = fs.getPath("/resources/html");

        System.out.println("walkFileTree within archive "+ jar+" starting at path: "+path);

        Files.walkFileTree(path, visitor);
    }

    Path parent = jar.getParent();
    System.out.println("walkFileTree at "+ parent);
    Files.walkFileTree(parent, visitor);
}
publicstaticvoidmain(字符串[]args)引发IOException
{
var jar=Path.of(“C:\\Users\\raz\\Desktop\\WebServer.jar”);
System.out.println(“isRegularFile()=”+Files.isRegularFile(jar));

FileVisitor您的搜索目录中是否有任何压缩文件,例如
jar
zip
?不确定这是否是问题所在,因为异常没有说
jar:file…
。它们可能是有效的
URI
s,但不是有效的
Path
s或
file
s。路径也可能是无效的tains
`.Try
resources\\html\\index.html`.
文件:\C:\Users\raz\Desktop\WebServer.jar!\resources\html
是一个URL而不是路径。错误消息清楚地表明,出现在
文件
后面的冒号字符是意外的。