点击上方☝SpringForAll社区 轻松关注!

及时获取有趣有料的技术文章

文件路径的描述与操作 Path & Paths

1、文件路径字符串转 Patsh 对象

1Path filePath = Paths.get("/Users/Anoyi/aaa.txt");

另一种写法:

1Path filePath = Paths.get("/Users", "Anoyi", "aaa.txt");

2、 Path 对象常用操作

 1# 获取文件名 aaa.txt2filePath.getFileName()34# 获取父路径 /Users/Anoyi5filePath.getParent()67# 获取文件层级数量 38filePath.getNameCount()9
10# 获取指定层级文件(夹)名 Anoyi
11filePath.getName(1)
12
13# 获取同级目录其他文件(夹) /Users/Anoyi/bbb.txt
14filePath.resolveSibling("bbb.txt")
15
16# 获取同级目录其他文件(夹) /Users/Anoyi/zzz/bbb.txt
17filePath.resolveSibling("zzz/bbb.txt")
18
19# 获取子级目录其他文件(夹) /Users/Anoyi/aaa.txt/bbb.txt
20filePath.resolve("bbb.txt")
21
22# 获取绝对路径 /Users/Anoyi/aaa.txt ,如果是 Paths.get("Users/Anoyi/aaa.txt"),则绝对路径为:项目绝对路径 + "/Users/Anoyi/aaa.txt"
23filePath.toAbsolutePath()
24
25# 转化为文件
26filePath.toFile()

文件操作 Path & Files

基本操作

 1Path dirPath = Paths.get("/Users/Anoyi");23# 校验文件(夹)存在4Files.exists(dirPath)56# 校验文件(夹)不存在7Files.notExists(dirPath)89# 校验是否为文件夹
10Files.isDirectory(dirPath)
11
12# 校验是否为文件 /Users/Anoyi/aaa.txt
13Files.isRegularFile(dirPath.resolve("aaa.txt"))
14
15# 创建文件 /Users/Anoyi/bbb.txt
16Files.createFile(dirPath.resolve("bbb.txt"))
17
18# 创建文件夹 /Users/Anoyi/xxx
19Files.createDirectory(dirPath.resolve("xxx"))
20
21# 创建多级文件夹 /Users/Anoyi/yyy/zzz
22Files.createDirectory(dirPath.resolve("yyy/zzz"))
23
24# 文件(夹) 删除
25Files.delete(dirPath)
26Files.deleteIfExists(dirPath)
27
28# 文件(夹)复制 /Users/Anoyi/aaa.txt == /Users/Anoyi/ccc.txt
29Files.copy(dirPath.resolve("aaa.txt"), dirPath.resolve("ccc.txt"))
30
31# 文件(夹)移动 /Users/Anoyi/aaa.txt => /Users/other/aaa.txt
32Files.move(dirPath.resolve("aaa.txt"), Paths.get("/Users/other/aaa.txt"), StandardCopyOption.REPLACE_EXISTING)

文件读写

 1Path filePath = Paths.get("/Users/Anoyi/aaa.txt");23# 读所有行文本,默认使用 UTF-84Files.readAllLines(filePath, Charset.defaultCharset())56# 读字节数组7Files.readAllBytes(filePath)89# 写文本
10Files.write(filePath, Arrays.asList("line1", "line2"))
11
12# 写字节数组
13Files.write(filePath, new byte[]{})
14
15# 更灵活的写入数据
16Files.newBufferedWriter(filePath).write(...)
17
18# 获取 InputStream
19Files.newInputStream(filePath)
20
21# 获取 OutputStream
22Files.newOutputStream(filePath)

文件列表与查找

1Path dirPath = Paths.get("/Users/Anoyi");
2
3# 文件列表
4Files.list(dirPath)
5
6# 文件查找,查找路径深度 5
7Files.find(dirPath, 5, <条件>)

常用场景

1、文件列表,中文排序

 1    /**2     * 文件(夹)列表3     *4     * @param path 路径5     */6    public List<File> listDirs(String path) throws IOException {7        Path dirPath = Paths.get(path);8        if (Files.isDirectory(dirPath)) {9            Comparator<BaseFileBean> comparing = (o1, o2) -> Collator.getInstance(Locale.CHINESE).compare(o1.getName(), o2.getName());
10            return Files.list(Paths.get(path)).map(Path::toFile).sorted(comparing).collect(Collectors.toList());
11        }
12        return new ArrayList<>();
13    }

2、文件查找,忽略英文大小写

 1    /**2     * 查找文件(夹)3     */4    public List<BaseFileBean> findFiles(String folder, String keyword) throws IOException {5        final int MAX_DEPTH = 5;6        File dir = new File(folder);7        if (dir.exists() && dir.isDirectory()) {8            final String lowerKeyword = keyword.toLowerCase();9            Comparator<BaseFileBean> comparing = (o1, o2) -> Collator.getInstance(Locale.CHINESE).compare(o1.getName(), o2.getName());
10            Stream<Path> stream = Files.find(Paths.get(folder), MAX_DEPTH, (path, basicFileAttributes) -> path.getFileName().toString().toLowerCase().contains(lowerKeyword));
11            return stream.map(Path::toFile).sorted(comparing).collect(Collectors.toList());
12        }
13        return new ArrayList<>();
14    }

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!

Java 文件处理 Paths Files相关推荐

  1. Java文件IO操作应该抛弃File拥抱Paths和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  2. Java文件– java.nio.file.Files类

    Java Files class was introduced in Java 1.7 and is a part of java.nio.file package. Java Files类是Java ...

  3. java getfiles_Java8中的Files和Paths

    文件或目录路径 1. Path对象 Java.nio.file.Paths类中包含一个重载方法static get(),该方法接收一系列String或者URI作为参数,返回一个Path对象: 如果参数 ...

  4. java newdirectorystream_Path、Paths和DirectoryStreamT

    Windows的D:\lucene\example下有a.txt.b.txt.c.txt和d.docx四个文件. 遍历出txt文件: package com.ant.jdk7; import java ...

  5. java 文件监听器_java7 文件监听器

    java7中的文件监听,主要可以监听指定目录下的文件:新建 删除 修改等操作.StandardWatchEventKinds.ENTRY_MODIFY,StandardWatchEventKinds. ...

  6. Java 8陷阱–提防Files.lines()

    Java8中有一个非常不错的新功能,它允许您在一个衬里中从文件中获取字符串流. List lines = Files.lines(path).collect(Collectors.toList()); ...

  7. Java文件类– java.io.File

    Java File class is at the center of Java IO operations. Java File类是Java IO操作的中心. Java文件类 (Java File ...

  8. Android R系统aidl文件怎么对应的java文件找不到了?

        Android R系统aidl文件怎么对应的java文件找不到了? 引言   Android系列博客沉寂很久了,很久了!不是我已经离开了江湖,而是最近忙着给OpenHarmony鸿蒙小系统,标 ...

  9. java文件写入不覆盖_java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法...

    java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...

最新文章

  1. PHP中foreach详细解读
  2. UltraEdit 21激活
  3. Silverlight 4 WebBrowser的使用及调用 WebBrowser 中的 javascript 方法
  4. 从“负电价”说起:谈谈德国新能源消纳的借鉴意义
  5. Java --- 常用API
  6. .NET截取指定长度汉字超出部分以...代替
  7. python内存管理错误的是_Python内存管理机制
  8. Java时间处理方法
  9. Download Microsoft Visual Studio 2010 Ultimate Trial - ISO from Official Microsoft Download Center
  10. StarUML 系列,静态图与动态图,用例图,类图【ps:熟悉一下starUML】
  11. 【转】运维DBA的4大纪律9项注意
  12. 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉? 去掉桌面图标阴影技巧...
  13. 项目管理知识体系指南(四)项目管理范围
  14. 使用Ballerina构建API网关
  15. Android GLSurfaceView详解
  16. 假期错过的...条AI新闻都在这里了
  17. 高桥智隆:未来机器人将取代智能手机,并成为人类的朋友
  18. uniapp返回上一页携带参数,两种方法,实测有效
  19. 【OpenCV入门实战】利用电脑前置摄像头进行人脸检测
  20. 背靠创新工场,创新奇智瞄准企业AI赋能,天使轮融资过亿元人民币

热门文章

  1. 使用tar解压gz文件出现 “not in gzip format”错误解决办法
  2. Siege多线程编程最佳实例微信约战斗牛网站搭建
  3. Linux普通用户切换为超级用户(精华)
  4. Python学习之旅三:python高级语法
  5. Halium 9 尝鲜 -- 在小米平板4上的移植 (三)
  6. 使用jlink精简一个jre运行环境
  7. UG NX 12 点构造器
  8. 关于scheme的一些书籍的推荐
  9. 从LeNet-5看懂卷积神经网络结构
  10. 【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分