Java NIO学习之Paths、Files相关用法

Paths的用法

Paths主要用来处理文件路径,相比于传统靠String存储文件路径,Paths显得更直观、更简洁。

Paths主要初始化方法如下(D:\test\test):

java 复制代码
// 第一种
Path path = Paths.get("D:\\test\\test");
// 第二种
Path path = Paths.get("D:/test/test");
// 第三种
Path path = Paths.get("D:/test","test");

如何获取到字符串格式的文件路径呢?

java 复制代码
Path path = Paths.get("D:/test","test");
String filePath = path.toString();

Files的用法

这么一个场景,我需要遍历一个文件夹下所有的文件夹以及文件。

按照之前自已知道的肯定是去写递归函数去实现这个功能,今天就来点不一样的,Files的walkTree和walk方法就可以轻松实现文件夹遍历。

walkTree方法

java 复制代码
Files.walkFileTree(path, new SimpleFileVisitor<Path>(){
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                return super.preVisitDirectory(dir, attrs);
            }

            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                return super.visitFile(file, attrs);
            }

            @Override
            public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
                return super.visitFileFailed(file, exc);
            }

            @Override
            public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
                return super.postVisitDirectory(dir, exc);
            }
        });

说明:

  • preVisitDirectory:在访问文件前
  • visitFile:访问文件
  • visitFileFailed:访问文件失败
  • postVisitDirectory:在访问文件夹后

walk方法

java 复制代码
Files.walk(path).forEach(path1 -> {
                if(Files.isRegularFile(path1)){
                    System.out.println(path1.toString());
                }
            });

以上代码就是实现了去遍历一个文件夹下所有的文件的功能,简洁吧!

好了,以上就是本篇文章的所有内容了,感谢阅读!

相关推荐
Highcharts.js几秒前
技术组合分析:Highcharts 的数据集成能力解析
java·前端·金融·echarts·saas·bi·highcharts
qq_571099353 分钟前
学习周报四十二
学习
HERR_QQ13 分钟前
端到端课程自用 3 规划基于query的端到端规划
笔记·神经网络·学习·自动驾驶
思麟呀16 分钟前
在Select的基础上学习poll
linux·网络·学习·tcp/ip
d111111111d18 分钟前
STM32-UART抽象层封装调试
笔记·stm32·单片机·嵌入式硬件·学习
喜欢吃燃面28 分钟前
Linux 信号保存机制深度解析:从内核数据结构到进程状态管理
linux·运维·数据结构·学习
shaoFan137 分钟前
关于java 调用阿里千问大模型,流式返回,并返回给前端
java·前端·状态模式
雪碧聊技术37 分钟前
Java历史—沙箱安全机制
java·安全·沙箱机制
java1234_小锋38 分钟前
Spring AI 2.0 开发Java Agent智能体 - Spring AI 2.0简介
java·人工智能·spring·spring ai
秋雨梧桐叶落莳41 分钟前
iOS——Masonry约束内容整理
开发语言·学习·macos·ios·objective-c·cocoa