# commons-io 工具包
- commons-io 是 Apache 开源基金组织提供的一组有关 IO 操作的类库,可以挺提高 IO 功能开发的效率。commons-io 工具包提供了很多有关 IO 操作的类,见下表:
包 | 功能描述 |
---|---|
org.apache.commons.io | 有关 Streams、Readers、Writers、Files 的工具类 |
org.apache.commons.io.input | 输入流相关的实现类,包含 Reader 和 InputStream |
org.apache.commons.io.output | 输出流相关的实现类,包含 Writer 和 OutputStream |
org.apache.commons.io.serialization | 序列化相关的类 |
1. 配置步骤
- 下载 commons-io 相关 jar 包:http://commons.apache.org/proper/commons-io/;
- 把 commons-io-2.6.jar 包复制到指定的 Module 的 lib 目录中;
- 将 commons-io-2.6.jar 加入到 classpath 中;
2. 常用 API
- commons-io 提供了一个工具类 org.apache.commons.io.IOUtils,里面封装了大量 IO 读写操作的代码。其中有两个常用方法:
public static int copy(InputStream in, OutputStream out);
:把 input 输入流中的内容拷贝到 output 输出流中,返回拷贝的字节个数(适合文件大小为 2 GB 以下);public static long copyLarge(InputStream in, OutputStream out);
:把 input 输入流中的内容拷贝到 output 输出流中,返回拷贝的字节个数(适合文件大小为 2 GB 以上);
a. 案例:文件复制
- 较小文件可以使用 copy() 方法:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) throws Exception {
// 文件路径需要修改,改成自己文件的路径
File file = new File("C:\\Users\\80626\\Desktop\\1.txt");
FileInputStream is = new FileInputStream(file);
// 文件路径需要修改
File file1 = new File("C:\\Users\\80626\\Desktop\\2.txt");
FileOutputStream os = new FileOutputStream(file1);
// 文件复制
IOUtils.copy(is, os);
//注意要手动关闭流
os.close();
is.close();
//如果不想关闭流的话就用匿名对象的方式:
//String from = "C:\Users\80626\Desktop\1.txt";
//String to = "C:\Users\80626\Desktop\2.txt";
//IOUtils.copyLarge(new FileInputStream(from),new FileOutputStream(to));
}
}
-
commons-io 还提供了一个工具类 org.apache.commons.io.FileUtils,封装了一些对文件操作的方法:
public static void copyFileToDirectory(final File srcFile, final File destFile)
:复制文件到另外一个目录下;public static void copyDirectoryToDirectory( file1 , file2 );
:复制 file 1 目录到 file 2 位置;
-
案例演示:
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
//1.将文件复制到C:\\下
FileUtils.copyFileToDirectory(new File("C:\\Users\\80626\\Desktop\\1.txt"), new File("C:\\"));
//2.将目录复制到"C:\\"下。
FileUtils.copyDirectoryToDirectory(new File("C:\\Users\\80626\\Desktop\\1"), new File("C:\\"));
}
}
b. 案例:删除文件夹
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
//递归删除文件夹
FileUtils.deleteDirectory(new File("C:\\Users\\80626\\Desktop\\1"));
}
}