Java:FileUtils 文件操作[摘抄]

[转载]Guava 文件操作 中曾提到 Java 文件操作的一些方法。最近操作文件,发现 FileUtils 也很方便好用。

依赖

org.apache.commons.io.FileUtils
需要引入 commons-io 的依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>

API 文档

http://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/FileUtils.html

常用方法

FileUtils.getFile => 获取指定文件

FileUtils.getFile => 获取指定目录下的:”lalala.txt”, “lalala2.txt”

FileUtils.getTempDirectoryPath => 获取临时目录 File对象

FileUtils.getTempDirectoryPath => 获取临时目录路径字符串

FileUtils.getUserDirectory => 获取用户主目录 File对象

FileUtils.getUserDirectoryPath => 获取用户主目录路径字符串

FileUtils.byteCountToDisplaySize => 以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes

FileUtils.sizeOf => 读取文件大小

FileUtils.sizeOfDirectory => 目录,级联计算文件下的所有文件大小

FileUtils.copyDirectory => 复制文件夹(文件夹里面的文件内容也会复制)

FileUtils.copyDirectoryToDirectory => 此方法将目录1所有的文件夹及文件复制到目录2下,如果有同名文件夹则合并,如果有同名文件则替换

FileUtils.copyDirectory => 复制文件夹,带有文件过滤功能

FileUtils.openOutputStream => 获取文件输出流

FileUtils.touch => 创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件

FileUtils.contentEquals => 文件内容的对比

FileUtils.toFile => 根据URL获取文件

FileUtils.toFiles => 根据多个URL获取多个文件文件,返回File[]数组

FileUtils.copyFileToDirectory => 此方法将b文件夹下的123.txt拷贝到指定文件夹下,如果有同名文件则替换,前者没有报错,后者没有新建

FileUtils.copyFile => 此方法将b文件夹下a.doc拷贝到mm下a.doc,前者不存在会报错,后者不存在会新建,如果后者存在同名文件则替换

FileUtils.copyInputStreamToFile => 此方法将输入流的内容复制到新文件

FileUtils.copyUrlToFile => 此方法URL对应的文件复制一份

FileUtils.deleteDirectory => 删除目录或文件,无法删除会抛异常

FileUtils.deleteQuietly => 安静删除目录或文件,无法删除时也不会抛异常

FileUtils.directoryContains => 判断是否包含文件或文件夹

FileUtils.cleanDirectory => 清除目录中的内容,不会删除该目录, 遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常

FileUtils.waitFor => 等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次

FileUtils.readFileToString => 读取目标文件,返回文件内容字符串

FileUtils.readFileToByteArray => 读取目标文件,返回文件内容的bytes数组

FileUtils.readLines => 读取目标文件每一行数据,返回list

FileUtils.lineIterator => 读取目标文件每一行数据,返回迭代器

FileUtils.writeStringToFile => 将字符串写入文件,[目标文件] [写入的字符串] [字符集] [是否追加]

write可以接受charsequence类型的数据,string,stringbuilder和stringbuffer都是实现了charsequence接口

FileUtils.writeLines => writeLines多了一个lineEnding参数

FileUtils.forceDelete => 强制删除

FileUtils.forceDeleteOnExit => 当JVM退出时,把file对象删除。如果是目录对象则递归删除子目录,跟delete的区别是一个是立马执行 一个是JVM退出后执行 forceDeleteOnExit 这个用来删除临时文件或缓存文件用的

FileUtils.forceMkdir => 强制创建文件目录,如果文件存在,会抛出异常

FileUtils.forceMkdirParent => 强制创建父级目录

checksum、checksumCRC32 => 类似于校验MD5和。如long csum = FileUtils.checksum(file, new CRC32()).getValue(),一般下载来一个文件后,为了安全可以校验一下

FileUtils.isSymlink => 确定指定的文件是否是符号链接而不是实际文件

FileUtils.moveDirectory => 移动目录,移动的目录位置如果存在同名目录会报错

FileUtils.moveDirectoryToDirectory => 移动目录到指定目录下,第3个参数为,目录不存在是否创建

FileUtils.moveDirectory => 移动文件,移动的文件位置如果存在同名文件会报错

FileUtils.moveFileToDirectory => 移动文件到指定目录下,第3个参数为,目录不存在是否创建

FileUtils.moveToDirectory => 将文件或目录移动到目标目录

FileUtils.iterateFiles => 返回文件迭代器 [ 目录 ] [ 过滤器 ] [ 递归 ]

FileUtils.listFiles => 返回文件的列表 [ 目录 ] [ 过滤器 ] [ 递归 ]

FileUtils.convertFileCollectionToFileArray => 把collection转换成File[]

FileUtils.isFileOlder => 该文件是否在该时间之前创建

FileUtils.isFileNewer => 该文件是否在该时间之后创建