Apache Commons IO
在学习io流的时候研究(翻译)了一下这个,只有FileUtils的某些方法,并不全面,还请谅解
org.apache.commons.io
这个包下定义了基于 streams, readers, writers and files.的实用工具类.
org.apache.commons.io.comparator
这个包下定义了基于文件的各种比较器的实现
org.apache.commons.io.filefilter
这个包定义了一个接口(IoFielFieldField),融合了FieldField1和FielnaMeField.
org.apache.commons.io.input
这个包提供输入类的实现,如输入流和读取字符流。
org.apache.commons.io.monitor
这个包提供了一个用于监视文件系统事件(目录和文件创建、更新和删除事件)的组件。
org.apache.commons.io.output
这个包提供输出类的实现, 如输出流和写入流
org.apache.commons.io.serialization
这个包提供了一个用于控制类反序列化的框架。
FileUtils中的常用方法
package com.wzlove.commons;import org.apache.commons.io.FileUtils;import org.junit.Test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.List;/** * 测试FileUtiles中的常用方法 * * @author WZLOVE * @create 2018-07-21 13:29 */public class FileUtilsDemo { ???/** ????* static void ?cleanDirectory(File directory) ????* 删除文件夹内的所有内容,但不删除本文件夹 ????*/ ???@Test ???public void testCleanDirectory() throws IOException { ???????// 注意的是创建的文件夹的虚拟路径 ???????File dir = new File("F:\\ddd\\aaa"); ???????FileUtils.cleanDirectory(dir); ???} ???/** ????* static boolean contentEquals(File file1, File file2) ????* 比较两个文件的内容是否相同,相同返回true,不同返回false(.注意的是两个文件不存在,也会返回true) ????*/ ???@Test ???public void testContentEquals() throws IOException { ???????File file1 = new File("F:\\ddd\\aaa\\a.txt"); ???????File file2 = new File("F:\\ddd\\aaa\\b.txt"); ???????System.out.println(FileUtils.contentEquals(file1,file2)); ???} ???/** ????* static File[] convertFileCollectionToFileArray(Collection<File> files) ????* 将集合转化为数组 ????*/ ???@Test ???public void testConvertFileCollectionToFileArray(){ ???????ArrayList<File> fileList = new ArrayList<>(); ???????fileList.add(new File("C:\\aa")); ???????fileList.add(new File("D:\\aa")); ???????fileList.add(new File("E:\\aa")); ???????fileList.add(new File("F:\\aa")); ???????File[] files = FileUtils.convertFileCollectionToFileArray(fileList); ???????for (int i = 0; i < files.length; i++) { ???????????System.out.println(files[i].getAbsolutePath()); ???????} ???} ???/** ????* static void ?copyDirectory(File srcDir, File destDir) ????* 将srcDir目录下的文件复制到destDir目录下,文件存在则不重复复制 ????* 还有很多重载的方法,可以传递文件过滤器等等 ????*/ ???@Test ???public void testCopyDirectory() throws IOException { ???????File srcDir = new File("F:\\aaa"); ???????File destDir = new File("F:\\bbb"); ???????FileUtils.copyDirectory(srcDir,destDir); ???} ???/** ????* static void ?copyDirectoryToDirectory(File srcDir, File destDir) ????* 将srcDir整个文件夹放在destDir的文件夹下 ????*/ ???@Test ???public void testCopyDirectoryToDirectory() throws IOException { ???????File srcDir = new File("F:\\aaa"); ???????File destDir = new File("F:\\bbb"); ???????FileUtils.copyDirectoryToDirectory(srcDir,destDir); ???} ???/** ????* static void ?copyFile(File srcFile, File destFile) ????* 将srcFile文件复制到destFile中,destFile不存在则会创建目标文件 ????*/ ???@Test ???public void testCopyFile() throws IOException { ???????File srcDir = new File("F:\\aaa\\1.txt"); ???????File destDir = new File("F:\\bbb\\a.txt"); ???????FileUtils.copyFile(srcDir,destDir); ???} ???/** ????* static void ?copyFileToDirectory(File srcFile, File destDir) ????* 将srcFile文件复制到destDir的目录下 ????*/ ???@Test ???public void testCopyFileToDirectory() throws IOException { ???????File srcDir = new File("F:\\aaa\\1.txt"); ???????File destDir = new File("F:\\bbb"); ???????FileUtils.copyFileToDirectory(srcDir,destDir); ???} ???/** ????* static void ?copyToDirectory(File src, File destDir) ????* 复制文件或者文件夹到目标文件夹下 ????*/ ???@Test ???public void testCopyToDirectory() throws IOException { ???????File srcDir = new File("F:\\aaa"); ???????File destDir = new File("F:\\bbb"); ???????FileUtils.copyToDirectory(srcDir,destDir); ???} ???/** ????* static void ?copyURLToFile(URL source, File destination) ????* Copies bytes from the URL source to a file destination. ????*/ ???@Test ???public void testCopyURLToFile() throws IOException { ???????File destination = new File("F:\\bbb\\baidu.txt"); ???????FileUtils.copyURLToFile(new URL("http://ntlias-stu.boxuegu.com/#/index"),destination); ???} ???/** ????* static void ?deleteDirectory(File directory) ????* 删除这个文件夹,全部删除,包括这个文件,和cleanDirectory方法做个对比 ????*/ ???@Test ???public void testDeleteDirectory() throws IOException { ???????File directory = new File("F:\\bbb\\ccc"); ???????FileUtils.deleteDirectory(directory); ???} ???/** ????* static boolean ??deleteQuietly(File file) ????* 删除这个文件,不会抛出异常 ????*/ ???@Test ???public void testDeleteQuietly() { ???????File directory = new File("F:\\bbb\\a.txt"); ???????System.out.println(FileUtils.deleteQuietly(directory)); ???} ???/** ????* static void ?forceMkdir(File directory) ????* 创建文件夹,可以创建多级文件夹 ????*/ ???@Test ???public void testForceMkdir() throws IOException { ???????File directory = new File("F:\\bbb\\ccc\\ddd\\aaa"); ???????FileUtils.forceMkdir(directory); ???} ???/** ????* static void ?forceMkdirParent(File file) ????* 为一个文件创建父路径,但不会创建这个文件(比较奇怪) ????*/ ???@Test ???public void testForceMkdirParent() throws IOException { ???????File directory = new File("F:\\bbb\\aaa\\ccc\\a.txt"); ???????FileUtils.forceMkdirParent(directory); ???} ???/** ????* static String getUserDirectoryPath() ????* 返回用户的主目录 ????*/ ???@Test ???public void testGetUserDirectoryPath(){ ???????String str = FileUtils.getUserDirectoryPath(); ???????System.out.println(str); ???} ???/** ????* static void ?moveDirectory(File srcDir, File destDir) ????* 修改文件名,将srcDir.getName()的文件名更改为destDir.getName(),如果文件名存在,报错 ????*/ ???@Test ???public void testMoveDirectory() throws IOException { ???????File srcDir = new File("F:\\aaa"); ???????File destDir = new File("F:\\ccc"); ???????FileUtils.moveDirectory(srcDir,destDir); ???} ???/** ????* static void ?moveDirectoryToDirectory(File src, File destDir, boolean createDestDir) ????* ?将src移动到destDir,后面的boolean表示是不是当destDir文件夹不存在时创建文件夹,false是不创建,true是创建 ????* ?如果src不存在报错,如果src已经存在destDir中,则报错 ????*/ ???@Test ???public void testMoveDirectoryToDirectory() throws IOException { ???????File srcDir = new File("F:\\bbb"); ???????File destDir = new File("F:\\eee"); ???????FileUtils.moveDirectoryToDirectory(srcDir,destDir,true); ???} ???/** ????* static void ?moveFile(File srcFile, File destFile) ????* 修改文件名 ????* static void ?moveFileToDirectory(File srcFile, File destDir, boolean createDestDir) ????* 移动一个文件到文件夹中,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建 ????* static void ?moveToDirectory(File src, File destDir, boolean createDestDir) ????* 移动文件或者文件夹到目标文件夹,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建 ????*/ ???/** ????* static FileInputStream openInputStream(File file) ????* 返回文件字节输入流 ????*/ ???@Test ???public void testOpenInputStream() throws IOException { ???????File file = new File("F:\\bbb\\1.txt"); ???????FileInputStream fis = FileUtils.openInputStream(file); ???????// 可以进行字节流的读取操作 ???????fis.close(); ???} ????/** ?????* static FileOutputStream openOutputStream(File file) ?????* 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,目录存在,清空文件内容 ?????*/ ???/** ????* static FileOutputStream ?openOutputStream(File file, boolean append) ????* 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,如果目录存在,则不会清空内容,输出到文件的时候,会追加到原内容的后面 ????*/ ???/** ????* static byte[] ???readFileToByteArray(File file) ????* 读取文件,返回字节数组 ????*/ ???@Test ???public void testReadFileToByteArray() throws IOException { ???????File file = new File("F:\\bbb\\1.txt"); ???????byte[] bytes = FileUtils.readFileToByteArray(file); ???????System.out.println(new String(bytes)); ???} ???/** ????* static String ???readFileToString(File file, String encoding) ????* 按照指定编码格式读取文件 ????*/ ???@Test ???public void testReadFileToString() throws IOException { ???????File file = new File("F:\\bbb\\1.txt"); ???????String str = FileUtils.readFileToString(file,"UTF-8"); ???????System.out.println(str); ???} ???/** ????* static List<String> ?readLines(File file, String encoding) ????* ?按照指定编码读取文件,返回String集合,文件的每一行是一个元素 ????*/ ???@Test ???public void testReadLines() throws IOException { ???????File file = new File("F:\\bbb\\1.txt"); ???????List<String> list = FileUtils.readLines(file, "UTF-8"); ???????for (String s : list) { ???????????System.out.println(s); ???????} ???} ???/** ????* static long ?sizeOf(File file) ????* 返回文件或者文件夹的大小 ????*/ ???@Test ???public void testSizeOf() throws IOException { ???????File file = new File("F:\\bbb\\1.txt"); ???????long l ?= FileUtils.sizeOf(file); ???????System.out.println(l); ???????File file1 = new File("F:\\bbb"); ???????System.out.println(FileUtils.sizeOf(file1)); ???} ???/** ????* static File ?toFile(URL url) ????* Convert from a URL to a File. ????* 没理解 ????*/ ???@Test ???public void testToFile() throws IOException { ???????File file = FileUtils.toFile(new URL("file:\\F:\\bbb")); ???????System.out.println(file.getAbsolutePath()); ???} ???/** ????* static void ?writeByteArrayToFile(File file, byte[] data) ????* 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeByteArrayToFile(File file, byte[] data, boolean append) ????* 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????* static void ?writeByteArrayToFile(File file, byte[] data, int off, int len) ????* 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeByteArrayToFile(File file, byte[] data, int off, int len, boolean append) ????* 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????* static void ?writeStringToFile(File file, String data, String encoding) ????* 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeStringToFile(File file, String data, String encoding, boolean append) ????* 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????*/ ???/** ????* static void ?writeLines(File file, Collection<?> lines) ????* 将集合数据写入文件,每条数据占据一行,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeLines(File file, Collection<?> lines, boolean append) ????* ?将集合数据写入文件,每条数据占据一行, ????*/ ???@Test ???public void testWriteLines() throws IOException { ???????File file = new File("F:\\ddd\\a.txt"); ???????ArrayList<String> coll = new ArrayList<>(); ???????coll.add("I love Java"); ???????coll.add("I love you"); ???????FileUtils.writeLines(file,coll); ???} ???/** ????* static void ?writeLines(File file, Collection<?> lines, String lineEnding) ????* 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串,如果目标文件不存在, ????* 则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeLines(File file, Collection<?> lines, String lineEnding, boolean append) ????* 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串.如果目标文件不存在, ????* 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????*/ ???@Test ???public void tesWriteLines2() throws IOException { ???????File file = new File("F:\\ddd\\a.txt"); ???????ArrayList<String> coll = new ArrayList<>(); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????FileUtils.writeLines(file,coll,"I love you"); ???} ???/** ????* static void ?writeLines(File file, String encoding, Collection<?> lines) ????* 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在, ????* 则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeLines(File file, String encoding, Collection<?> lines, boolean append) ????* 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在, ????* ?则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????*/ ???@Test ???public void tesWriteLines3() throws IOException { ???????File file = new File("F:\\ddd\\a.txt"); ???????ArrayList<String> coll = new ArrayList<>(); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????FileUtils.writeLines(file,"UTF-8",coll); ???} ???/** ????* static void ?writeLines(File file, String encoding, Collection<?> lines, String lineEnding) ????* 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一 ????* 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在清空文件内容,再进行输入 ????* static void ?writeLines(File file, String encoding, Collection<?> lines, String lineEnding, boolean append) ????* 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一 ????* 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面 ????*/ ???@Test ???public void tesWriteLines4() throws IOException { ???????File file = new File("F:\\ddd\\a.txt"); ???????ArrayList<String> coll = new ArrayList<>(); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????coll.add("I love Java"); ???????FileUtils.writeLines(file,"UTF-8",coll,"I love you"); ???}}
Apache Commons IO之FileUtils的常用方法
原文地址:https://www.cnblogs.com/wadmwz/p/9361668.html