当前位置: > > > SpringBoot - 实用工具类库common-util使用详解9(文件操作:FileUtil)

SpringBoot - 实用工具类库common-util使用详解9(文件操作:FileUtil)

    FileUtil 是一些常见的文件操作的统一封装,所属的包为 com.power.common.util。而关于工具类库 common-util 的安装配置,可以参考我之前的文章(点击查看)。

九、文件操作工具类(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。返回结果是 truefalse
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
评论0