SpringBoot - 实用工具类库common-util使用详解9(文件操作:FileUtil)
FileUtil 是一些常见的文件操作的统一封装,所属的包为 com.power.common.util。而关于工具类库 common-util 的安装配置,可以参考我之前的文章(点击查看)。
(2)mkdirs() 可以建立多级文件夹,也就是说路径里没有的文件夹都会自动创建。
(2)如果文件夹内部有多层级的子目录,我们可以使用 DirUtil.copy() 方法进行复制:
(2)writeFile() 方法同样用于将字符串内容写到本地文件中,不过与上面 writeFileNotAppend() 方法不同的是,该方法第 3 个参数可以设置是否以追加的方式写文件(true 表示追加)
(3)writeFile() 方法第 4 个参数还可以设置编码:
(4)上面几个方法内部都是通过 IO 方式写文件,我们也可以使用如下方法通过 NIO 方式将字符串内容写入到文件系统中:
(2)getFileContent() 方法也可以从输入流中获取字符串内容:
(3)input2byte() 方法可以从输入流中读取字节数组数据(byte[])
九、文件操作工具类(FileUtil)
1,创建文件夹
(1)mkdir() 方法只会建立一级的文件夹。比如下面命令,必须是 aaa 文件夹存在的情况下,才会创建 bbb 文件夹(否则的话路径里的所有层级文件夹都不会创建,相当于没有执行这个命令)
FileUtil.mkdir("/Volumes/BOOTCAMP/aaa/bbb");
(2)mkdirs() 可以建立多级文件夹,也就是说路径里没有的文件夹都会自动创建。
FileUtil.mkdirs("/Volumes/BOOTCAMP/aaa/bbb");
2,复制文件夹
(1) copyDir() 方法可以将一个文件夹(包含里面的子文件)复制到指定里路径:
注意:该方法只能复制一层,也就是说文件夹里只能是文件,不能有子文件夹,否则会报错。
// 将 aaa 文件夹复制到 bbb,两个文件夹里面东西是一样的 FileUtil.copyDir("/Volumes/BOOTCAMP/aaa","/Volumes/BOOTCAMP/222");
(2)如果文件夹内部有多层级的子目录,我们可以使用 DirUtil.copy() 方法进行复制:
// 连同子文件夹也会一起复制 DirUtil.copy(Paths.get("/Volumes/BOOTCAMP/aaa"),Paths.get("/Volumes/BOOTCAMP/222"));
3,获取指定路径下的所有文件
getResourceFolderFiles() 可以获取指定路径下的所有文件,返回的是 File 数组:File[] files = FileUtil.getResourceFolderFiles("/Volumes/BOOTCAMP");
4,写文件
(1)writeFileNotAppend() 方法用于将字符串内容写到本地文件系统中,每次写入都会覆盖文件中旧的内容,默认编码为 utf-8。返回结果是 true 或 false。FileUtil.writeFileNotAppend("welcome to hangge.com", "/Volumes/BOOTCAMP/hello.txt");
(2)writeFile() 方法同样用于将字符串内容写到本地文件中,不过与上面 writeFileNotAppend() 方法不同的是,该方法第 3 个参数可以设置是否以追加的方式写文件(true 表示追加)
// 追加添加内容 FileUtil.writeFile("welcome to hangge.com", "/Volumes/BOOTCAMP/hello.txt", true);
(3)writeFile() 方法第 4 个参数还可以设置编码:
// 追加添加内容,并且编码为 utf-8 FileUtil.writeFile("welcome to hangge.com", "/Volumes/BOOTCAMP/hello.txt", true, "UTF-8");
(4)上面几个方法内部都是通过 IO 方式写文件,我们也可以使用如下方法通过 NIO 方式将字符串内容写入到文件系统中:
- nioWriteFile() 方法写入时旧的内容会被新的覆盖,默认编码为 utf-8
- nioWriteAppendable() 方法新的内容会被追加到旧的内容后面,默认编码为 utf-8
// 使用覆盖的方式写文件 FileUtil.nioWriteFile("welcome to hangge.com", "/Volumes/BOOTCAMP/hello.txt"); // 使用追加的方式写文件 FileUtil.nioWriteAppendable("welcome to hangge.com", "/Volumes/BOOTCAMP/hello.txt");
5,读文件
(1)getFileContent() 方法用于获取文件内容并将内容做为字符串返回:String content = FileUtil.getFileContent("/Volumes/BOOTCAMP/hello.txt");
(2)getFileContent() 方法也可以从输入流中获取字符串内容:
File file = new File("/Volumes/BOOTCAMP/hello.txt"); InputStream input = new FileInputStream(file); String content = FileUtil.getFileContent(input);
(3)input2byte() 方法可以从输入流中读取字节数组数据(byte[])
File file = new File("/Volumes/BOOTCAMP/hello.txt"); InputStream input = new FileInputStream(file); byte[] bytes = FileUtil.input2byte(input);
6,复制文件
nioTransferCopy(source, target) 方法采用 nio 的高效方式来实现文件复制,source 为复制的源文件,target 为目标文件。File source = new File("/Volumes/BOOTCAMP/hello.txt"); File target = new File("/Volumes/BOOTCAMP/hello2.txt"); FileUtil.nioTransferCopy(source, target);
7,获取不带后缀的文件名
toSuffix() 方法用于获取不带后缀的文件名:String fileName = FileUtil.toSuffix("hello.txt"); // hello