目录
1. 什么是FileUtils类?
1.1 什么是Common IO
1.2 添加相关的maven依赖
1.3 什么是FileUtils
2. FileUtils类的常用方法
2.1. 复制文件夹 copyDirectory
2.2 复制文件 copyFile
2.3 把字符串写入文件 writeStringToFile
2.4 把字节数组写入文件 writeByteArrayToFile
2.5 把集合里面的内容写入文件 writeLines
2.6 往文件里面写内容 write
2.7 文件移动 moveDirectory, moveFile, moveToDirectory
2.8 清空和删除文件夹 deleteDirectory
2.9 创建文件夹 forceMkdir, forceMkdirParent
2.10 获取文件输入/输出流 openInputStream, openOutputStream
2.11 读取文件 readFileToString, readLines, readFileToByteArray
2.12 测试两个文件的修改时间 isFileNewer, isFileOlder
2.13 文件/文件夹的迭代 iterateFiles, iterateFilesAndDirs, lineIterator...
2.14 其他一些常用方法
3. FileUtils类的常用常量
Common IO是一个工具库,用来帮助开发IO功能。
包含了:IOUtils,FileUtils,FilenameUtils等多个类。
commons-io
commons-io
2.6
FileUtils存在于Common工具库中。包含一些工具类,它们基于File对象工作,包括读,写,拷贝和比较文件。
(1)FileUtils.copyDirectory(File srcDir, File destDir)
// 复制文件夹(文件夹里面的文件内容也会复制)
(2)FileUtils.copyDirectory(File srcDir, File destDir, FileFilter filter)
// 复制文件夹,带有文件过滤功能
(3)FileUtils.copyDirectoryToDirectory(File srcDir, File destDir)
// 以子目录的形式将文件夹复制到到另一个文件夹下
(1)FileUtils.copyFile(File srcFile, File destFile)
// 复制文件
(2)FileUtils.copyFile(File input, OutputStream output)
// 复制文件到输出流
(3)FileUtils.copyFileToDirectory(File srcFile, File destDir)
// 复制文件到一个指定的目录
(4)FileUtils.copyInputStreamToFile(InputStream source, File destination)
// 把输入流里面的内容复制到指定文件
(5)FileUtils.copyURLToFile(URL source, File destination)
// 把URL 里面内容复制到文件(可下载文件)
(6)FileUtils.copyURLToFile(URL source, File destination, int connectionTimeout, int readTimeout)
// 把URL 里面内容复制到文件(可下载文件),设置连接超时,读取超时等参数
(1)FileUtils.writeStringToFile(File file, String data, String encoding)
//把字符串写入文件,设置编码方式
(2)FileUtils.writeStringToFile(File file, String data, String encoding, boolean append)
//把字符串写入文件,设置编码方式,设置是否追加
(1)FileUtils.writeByteArrayToFile(File file, byte[] data)
(2)FileUtils.writeByteArrayToFile(File file, byte[] data, boolean append)
(3)FileUtils.writeByteArrayToFile(File file, byte[] data, int off, int len)
(4)FileUtils.writeByteArrayToFile(File file, byte[] data, int off, int len, boolean append)
其中: encoding:文件编码,lineEnding:每行以什么结尾
(1)FileUtils.writeLines(File file, Collection> lines)
(2)FileUtils.writeLines(File file, Collection> lines, boolean append)
(3)FileUtils.writeLines(File file, Collection> lines, String lineEnding)
(4)FileUtils.writeLines(File file, Collection> lines, String lineEnding, boolean append)
(5)FileUtils.writeLines(File file, String encoding, Collection> lines)
(6)FileUtils.writeLines(File file, String encoding, Collection> lines, boolean append)
(7)FileUtils.writeLines(File file, String encoding, Collection> lines, String lineEnding)
(8)FileUtils.writeLines(File file, String encoding, Collection> lines, String lineEnding, boolean append)
(1)FileUtils.write(File file, CharSequence data, Charset encoding)
(2)FileUtils.write(File file, CharSequence data, Charset encoding, boolean append)
(3)FileUtils.write(File file, CharSequence data, String encoding)
(4)FileUtils.write(File file, CharSequence data, String encoding, boolean append)
(1)FileUtils.moveDirectory(File srcDir, File destDir)
// 文件夹在内的所有文件都将移动
(2)FileUtils.moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)
// 以子文件夹的形式移动到另外一个文件下
(3)FileUtils.moveFile(File srcFile, File destFile)
// 移动文件
(4)FileUtils.moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)
// 以子文件的形式移动到另外一个文件夹下
(5)FileUtils.moveToDirectory(File src, File destDir, boolean createDestDir)
// 移动文件或者目录到指定的文件夹内
(1)FileUtils.deleteDirectory(File directory)
// 删除文件夹,包括文件夹和文件夹里面所有的文件
(2)FileUtils.cleanDirectory(File directory)
// 清空文件夹里面的所有的内容
(3)FileUtils.forceDelete(File file)
// 删除,会抛出异常
(4)FileUtils.deleteQuietly(File file)
// 删除,不会抛出异常
(1)FileUtils.forceMkdir(File directory)
// 创建文件夹(可创建多级)
(2)FileUtils.forceMkdirParent(File file)
// 创建文件的父级目录
(1)FileUtils.openInputStream(File file)
(2)FileUtils.openOutputStream(File file)
(1)FileUtils.readFileToByteArray(File file)
// 把文件读取到字节数组
(2)FileUtils.readFileToString(File file, Charset encoding)
// 把文件读取成字符串
(3)FileUtils.readFileToString(File file, String encoding)
(4)FileUtils.readLines(File file, Charset encoding)
// 把文件读取成字符串集合
(5)FileUtils.readLines(File file, String encoding)
(1)FileUtils.isFileNewer(File file, Date date)
(2)FileUtils.isFileNewer(File file, File reference)
(3)FileUtils.isFileNewer(File file, long timeMillis)
(4)FileUtils.isFileOlder(File file, Date date)
(5)FileUtils.isFileOlder(File file, File reference)
(6)FileUtils.isFileOlder(File file, long timeMillis)
(1)FileUtils.iterateFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
(2)FileUtils.iterateFiles(File directory, String[] extensions, boolean recursive)
(3)FileUtils.iterateFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
(4)FileUtils.lineIterator(File file)
(5)FileUtils.lineIterator(File file, String encoding)
(6)FileUtils.listFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
(7)FileUtils.listFiles(File directory, String[] extensions, boolean recursive)
(8)FileUtils.listFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
(1)FileUtils.isSymlink(File file) // 判断是否是符号链接
(2)FileUtils.directoryContains(File directory, File child) // 判断文件夹内是否包含某个文件或者文件夹
(3)FileUtils.sizeOf => 读取文件大小
FileUtils.sizeOf(new File("D://test/test1")); //返回Long
FileUtils.sizeOfAsBigInteger(new File("D://test/test1")); //返回BigInteger
(4)FileUtils.sizeOfDirectory => 目录,级联计算文件下的所有文件大小
FileUtils.sizeOfDirectory(new File("D://test/test1")); //返回Long
FileUtils.sizeOfDirectoryAsBigInteger(new File("D://test/test1")); //返回BigIntege
(5)FileUtils.getFile => 获取指定文件
File file = FileUtils.getFile("D://test/test1/123.txt");
(6)FileUtils.getFile => 获取指定目录下的:"lalala.txt", "lalala2.txt"
File file1 = FileUtils.getFile(new File("D://test/test1"), "123.txt", "456.txt");
(7)FileUtils.getTempDirectory() // 获取临时目录文件
(8)FileUtils.getTempDirectoryPath() // 获取临时目录路径
(9)FileUtils.getUserDirectory() // 获取用户目录文件
(10)FileUtils.getUserDirectoryPath() // 获取用户目录路径字符串
(11)FileUtils.touch(File file) // 创建文件
(12)FileUtils.contentEquals(File file1, File file2) // 比较两个文件内容是否相同
(13)FileUtils.toFile => 根据URL获取文件
//FileUtils.toFile(URL url)使用相对路径创建一个File对象
String data = FileUtils.readFileToString(FileUtils.toFile(
AjavaURLToFile.class.getResource("/ajava.txt")));
System.out.println("data = " + data);
//FileUtils.toFile(URL url)使用绝对路径创建一个File对象
File file = FileUtils.toFile(new URL("file://D:/ajavademo.txt"));
data = FileUtils.readFileToString(file);
System.out.println("data = " + data);
(14)FileUtils.toFiles => 根据多个URL获取多个文件文件,返回File[]数组
// File[] toFiles(final URL[] urls)
FileUtils.toFiles(null);
(15)FileUtils.toURLs => 文件地址转为URL
FileUtils.toURLs(new File[]{new File("D://test/test1")});
(16)FileUtils.listFiles => 返回文件的列表 [ 目录 ] [ 过滤器 ] [ 递归 ]
// 列出该目录下的所有doc文件,递归(扩展名不必带.doc)
List
files = (List ) FileUtils.listFiles(new File("D://test"), new String[]{"doc"}, true); //列出该目录下的所有文件,不 递归
List
fileList = (List )FileUtils.listFiles(dir,null,false); (17)FileUtils.convertFileCollectionToFileArray => 把collection
转换成File[] FileUtils.convertFileCollectionToFileArray(files);
(18)FileUtils.byteCountToDisplaySize => 以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes
System.out.println(FileUtils.byteCountToDisplaySize(10000000)); // 9 MB
System.out.println(FileUtils.byteCountToDisplaySize(1)); // 1 bytes
(19)FileUtils.openInputStream => 获取文件输入流
InputStream in = FileUtils.openInputStream(new File("D://test/test1"));
(20)FileUtils.openOutputStream => 获取文件输出流
OutputStream out = FileUtils.openOutputStream(new File("D://test/test2"));
out = FileUtils.openOutputStream(new File("D://test/test3"), true); //是否追加的形式添加内容
(21)FileUtils.cleanDirectory => 清除目录中的内容,不会删除该目录, 遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常
FileUtils.cleanDirectory(new File("D://test/test1"));
(22)FileUtils.waitFor => 等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次
while (FileUtils.waitFor(new File("D://test/test1"), 60)) {}
(23)FileUtils.isSymlink => 确定指定的文件是否是符号链接而不是实际文件
FileUtils.isSymlink(new File("D://test/test1"));
(24)FileUtils.innerListFiles => 根据一个过滤规则获取一个目录下的文件
(25)FileUtils.validateListFilesParameters => 查找给定目录中的文件(以及可选的目录子目录)。所有找到的文件都由IOFileFilter过滤。
(27)FileUtils.setUpEffectiveFileFilter => 返回一个过滤器,该过滤器除了接受给定过滤器接受的{@link File}对象外,还接受其他文件。
(28)FileUtils.listFilesAndDirs => 查找给定目录中的文件(以及可选的目录子目录)。所有找到的文件都由IOFileFilter过滤。
(29)FileUtils.iterateFilesAndDirs => 允许对给定目录中的文件进行迭代(可选)它的子目录)。
(30)FileUtils.toSuffixes => 把指定的字符串数组变成后缀名格式字符串数组
public static final long ONE_KB = 1024;
public static final BigInteger ONE_KB_BI = BigInteger.valueOf(ONE_KB);
public static final long ONE_MB = ONE_KB * ONE_KB;
public static final BigInteger ONE_MB_BI = ONE_KB_BI.multiply(ONE_KB_BI);
private static final long FILE_COPY_BUFFER_SIZE = ONE_MB * 30;
public static final long ONE_GB = ONE_KB * ONE_MB;
public static final BigInteger ONE_GB_BI = ONE_KB_BI.multiply(ONE_MB_BI);
public static final long ONE_TB = ONE_KB * ONE_GB;
public static final BigInteger ONE_TB_BI = ONE_KB_BI.multiply(ONE_GB_BI);
public static final long ONE_PB = ONE_KB * ONE_TB;
public static final BigInteger ONE_PB_BI = ONE_KB_BI.multiply(ONE_TB_BI);
public static final long ONE_EB = ONE_KB * ONE_PB;
public static final BigInteger ONE_EB_BI = ONE_KB_BI.multiply(ONE_PB_BI);
public static final BigInteger ONE_ZB = BigInteger.valueOf(ONE_KB).multiply(BigInteger.valueOf(ONE_EB));
public static final BigInteger ONE_YB = ONE_KB_BI.multiply(ONE_ZB);
public static final File[] EMPTY_FILE_ARRAY = new File[0];