一、概述
这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。
二、commons-io在maven中央仓库的最新版本地址
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
三、FilenameUtils API操作如下
1 package com.ickes.filename;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import org.apache.commons.io.FilenameUtils;
6 import org.apache.commons.io.IOCase;
7 /**
8 * org.apache.commons.io.FilenameUtils工具类笔记
9 * @author Ickes
10 */
11 public class FilenameUtilsTest {
12 public static void main(String[] args) throws Exception {
13 String fileDirectory = "/D:/aa/bb/cc";
14 String fileName ="file.txt";
15 String fileFullName = fileDirectory +"/"+ fileName;
16 System.out.println("(1)显示linux路径:"+FilenameUtils.normalizeNoEndSeparator(fileFullName));
17 System.out.println("(2)合并目录和文件名为文件全路径:"+FilenameUtils.concat(fileDirectory, fileName));
18 System.out.println("(3)文件路径去除目录和后缀后的文件名:"+FilenameUtils.getBaseName(fileFullName));
19 System.out.println("(4)获取文件的后缀:"+FilenameUtils.getExtension(fileFullName));
20 System.out.println("(5)获取文件的完整目录:"+FilenameUtils.getFullPath(fileFullName));
21 System.out.println("(6)获取文件的目录不包含结束符:"+FilenameUtils.getFullPathNoEndSeparator(fileFullName));
22 System.out.println("(7)获取文件名称,包含后缀:"+FilenameUtils.getName(fileFullName));
23 System.out.println("(8)去除前缀的路径:"+FilenameUtils.getPath(fileFullName));
24 System.out.println("(9)去除前缀并结尾去除分隔符:"+FilenameUtils.getPathNoEndSeparator(fileFullName));
25 System.out.println("(10)获取前缀:"+FilenameUtils.getPrefix(fileFullName));
26 System.out.println("(11)获取前缀长度:"+FilenameUtils.getPrefixLength(fileFullName));
27 System.out.println("(12)获取最后一个.的位置:"+FilenameUtils.indexOfExtension(fileFullName));
28 System.out.println("(13)获取最后一个/的位置:"+FilenameUtils.indexOfLastSeparator(fileFullName));
29 System.out.println("(14)获取当前系统格式化路径:"+FilenameUtils.normalize(fileFullName));
30 System.out.println("(16)获取当前系统无结尾分隔符的路径:"+FilenameUtils.normalizeNoEndSeparator(fileDirectory));
31 System.out.println("(17)获取linux系统无结尾分隔符的路径:"+FilenameUtils.normalizeNoEndSeparator(fileDirectory));
32 System.out.println("(18)移除文件的扩展名:"+FilenameUtils.removeExtension(fileFullName));
33 System.out.println("(19)转换分隔符为当前系统分隔符:"+FilenameUtils.separatorsToSystem(fileFullName));
34 System.out.println("(20)转换分隔符为linux系统分隔符:"+FilenameUtils.separatorsToUnix(fileFullName));
35 System.out.println("(21)转换分隔符为windows系统分隔符:"+FilenameUtils.separatorsToWindows(fileFullName));
36 System.out.println("(22)判断目录下是否包含指定文件或目录:"+FilenameUtils.directoryContains(fileDirectory, fileName));
37 String linuxFileName = FilenameUtils.normalize(fileFullName);
38 System.out.println("(23)判断文件路径是否相同:"+FilenameUtils.equals(fileFullName, linuxFileName));
39 System.out.println("(24)判断文件路径是否相同,格式化并大小写不敏感:"+FilenameUtils.equals(fileFullName,
40 FilenameUtils.normalize(fileFullName),true,IOCase.INSENSITIVE));
41 System.out.println("(25)判断文件路径是否相同,格式化并大小写敏感:"
42 + FilenameUtils.equalsNormalized(fileFullName, linuxFileName));
43 System.out.println("(26)判断文件路径是否相同,不格式化,大小写敏感根据系统规则:windows:敏感;linux:不敏感:"
44 + FilenameUtils.equalsOnSystem(fileFullName, linuxFileName));
45 List<String> extensions = new ArrayList<>();
46 extensions.add("txt");
47 extensions.add("java");
48 System.out.println("(27)判断文件扩展名是否包含在指定集合中:"
49 + FilenameUtils.isExtension(fileFullName, extensions));
50 System.out.println("(28)判断文件扩展名是否等于指定扩展名:"
51 + FilenameUtils.isExtension(fileFullName, "txt"));
52 System.out.println("(29)判断文件扩展名是否包含在指定字符串数组中:"
53 + FilenameUtils.isExtension(fileFullName, new String[]{"txt","java"}));
54 System.out.println("(30)判断文件扩展名是否和指定规则匹配,大小写敏感:"
55 + FilenameUtils.wildcardMatch(fileName, "*.???"));
56 System.out.println("(31)判断文件扩展名是否和指定规则匹配,大小写不敏感:"
57 + FilenameUtils.wildcardMatch(fileName, "*.???",IOCase.INSENSITIVE));
58 System.out.println("(32)判断文件扩展名是否和指定规则匹配,根据系统判断敏感型:windows:不敏感;linux:敏感:"
59 + FilenameUtils.wildcardMatchOnSystem(fileName, "*.???"));
60
61 }
62 }
四、打印结果
1 (1)显示linux路径:\D:\aa\bb\cc\file.txt
2 (2)合并目录和文件名为文件全路径:\D:\aa\bb\cc\file.txt
3 (3)文件路径去除目录和后缀后的文件名:file
4 (4)获取文件的后缀:txt
5 (5)获取文件的完整目录:/D:/aa/bb/cc/
6 (6)获取文件的目录不包含结束符:/D:/aa/bb/cc
7 (7)获取文件名称,包含后缀:file.txt
8 (8)去除前缀的路径:D:/aa/bb/cc/
9 (9)去除前缀并结尾去除分隔符:D:/aa/bb/cc
10 (10)获取前缀:/
11 (11)获取前缀长度:1
12 (12)获取最后一个.的位置:17
13 (13)获取最后一个/的位置:12
14 (14)获取当前系统格式化路径:\D:\aa\bb\cc\file.txt
15 (16)获取当前系统无结尾分隔符的路径:\D:\aa\bb\cc
16 (17)获取linux系统无结尾分隔符的路径:\D:\aa\bb\cc
17 (18)移除文件的扩展名:/D:/aa/bb/cc/file
18 (19)转换分隔符为当前系统分隔符:\D:\aa\bb\cc\file.txt
19 (20)转换分隔符为linux系统分隔符:/D:/aa/bb/cc/file.txt
20 (21)转换分隔符为windows系统分隔符:\D:\aa\bb\cc\file.txt
21 (22)判断目录下是否包含指定文件或目录:false
22 (23)判断文件路径是否相同:false
23 (24)判断文件路径是否相同,格式化并大小写不敏感:true
24 (25)判断文件路径是否相同,格式化并大小写敏感:true
25 (26)判断文件路径是否相同,不格式化,大小写敏感根据系统规则:windows:敏感;linux:不敏感:false
26 (27)判断文件扩展名是否包含在指定集合中:true
27 (28)判断文件扩展名是否等于指定扩展名:true
28 (29)判断文件扩展名是否包含在指定字符串数组中:true
29 (30)判断文件扩展名是否和指定规则匹配,大小写敏感:true
30 (31)判断文件扩展名是否和指定规则匹配,大小写不敏感:true
31 (32)判断文件扩展名是否和指定规则匹配,根据系统判断敏感型:windows:不敏感;linux:敏感:true