美文网首页
迭代目录中的文件

迭代目录中的文件

作者: 鉴闻俗说 | 来源:发表于2017-07-18 10:56 被阅读0次

    1、迭代目录中的文件

    Files中有一方法,它可以产生一个Iterable对象

            //创建一个相对路径,此处是用户当前的工作目录
            final String inDirectory = "";
            Path dir = Paths.get(inDirectory);
    
            //访问dir目录下的所有根目录下的文件,不包括子文件中的文件
            try (DirectoryStream<Path> entries = Files.newDirectoryStream(dir))
            {
                    for (Path entry : entries)
                        System.out.println(entry);
            }
    

    可以用glob模式来过滤文件

           //访问dir目录下的所有根目录下的txt文件,不包括子文件中的文件
            try (DirectoryStream<Path> entries = Files.newDirectoryStream(dir, "*.txt"))
            {
                    for (Path entry : entries)
                        System.out.println(entry);
            }
    

    2、访问某个目录的所有子孙成员(子目录,以及子目录下的目录......)

           //访问某个目录的所有子目录,不会到文件
            Files.walkFileTree(dir, new SimpleFileVisitor<Path>()
            {
                public FileVisitResult preVisitDirectory(Path path, BasicFileAttributes attrs)
                {
                    System.out.println(path);
                    return FileVisitResult.CONTINUE;
                }
    
                public FileVisitResult visitFileFailed(Path path, IOException exc)
                {
                    return FileVisitResult.CONTINUE;
                }
            });
    

    3、ZIP文件系统

            //创建一个相对路径,此处是用户当前的工作目录下的temp.zip
            final String zipName = "temp.zip";
            Path zip = Paths.get(zipName);
    
            //通过遍历文件树,列出zip文档中的所有文件,包括子目录下的文件
            FileSystem fs = FileSystems.newFileSystem(zip,null);
            Files.walkFileTree(fs.getPath("/"), new SimpleFileVisitor<Path>()
            {
                public FileVisitResult visitFile (Path file, BasicFileAttributes attrs)
                {
                    System.out.println(file);
                    return FileVisitResult.CONTINUE;
                }
            });
    

    注释:如果zip文件名或其中文件名包括中文,会出错,暂时没有找到好的解决办法

    相关文章

      网友评论

          本文标题:迭代目录中的文件

          本文链接:https://www.haomeiwen.com/subject/sdbckxtx.html