文章目录
Apache IO
- JDK中提供的文件操作相关的类,但是功能都非常基础,进行复杂操作时需要做大量编程工作。实际开发中,往往需要你自己动手编写相关的代码,尤其在遍历目录文件时,经常用到递归,非常繁项。
- Apache-commons工具包中提供了IOUtils/FileUtils,可以让我们非常方便的对文件和目录进行操作。本文就是让大家对IOUtils/FileUtils类有一个全面的认识便于大家以后开发与文件和目录相关的功能。
- ApacheloUtils和FileUtils类库为我们提供了更加简单、功能更加强大的文件操作和IO流操作功能。
1 Apache基金会介绍
2 下载与添加commons-io包
- 下载地址
- 添加jar包
- 方式一:
- 创建libs目录,添加commons-io的jar包
- 右键将libs设置为库,即可
- 方式二:如下图
3 FileUtils的使用
3.1 FileUtils类中常用方法
- 打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
方法名 | 说明 |
---|---|
cleanDirectory | 清空目录,但不删除目录 |
contentEquals | 比较两个文件的内容是否相同 |
copyDirectory | 将一个目录内容接贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件。 |
copyFile | 将一个文件拷贝到一个新的地址 |
copyFileToDirectory | 将一个文件拷贝到某个目录下。 |
copylnputStreamToFile | 将一个输入流中的内容拷贝到某个文件。 |
deleteDirectory | 删除目录。 |
deleteQuietly | 删除文件。 |
istFiles | 列出指定自录下的所有文件 |
openlnputsteam | 打开指定文件的输入流。 |
readFileToString | 将文件内容作为字符串返回 |
readLines | 将文件内容按行返回到一个字符串数组中 |
size | 返回文件或目录的大小 |
write | 将学符串内容直接写到文件中 |
writeByteArrayToFile | 将字节数组内容写到文件中 |
3.2 FileUtils的使用一【readFileToString】
package IO流.ApacheIO包;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
/**
* @author 缘友一世
* date 2022/10/27-22:05
*/
public class FileUtilsDemo1 {
public static void main(String[] args) {
try {
String content = FileUtils.readFileToString(new File("basic grammar/src/IO流/write.txt"), "utf-8");
System.out.println(content);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
3.3 FileUtils的使用二【copyDirectory】
package IO流.ApacheIO包;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
/**
* @author 缘友一世
* date 2022/10/27-22:13
*/
public class FileUtilsDemo2 {
public static void main(String[] args) throws IOException {
FileUtils.copyDirectory(new File("basic grammar/src/IO流/ApacheIO包/test"), new File("basic grammar/src/IO流/APache包/desition"), new FileFilter() {
//文件拷贝的过滤条件
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory() || pathname.getName().endsWith("html")) {
return true;
}
return false;
}
});
}
}
4 IOUtils的使用
- 打开IOUtils的api文档,我们发现它的方法大部分都是重载的。所以,我们理解它的方法并不是难事。因此,对于方法的用法总结如下:
方法名 | 说明 |
---|---|
buffer方法 | 将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。 |
closeQueitly方法 | 关闭流 |
contentEquals方法 | 比较两个流中的内容是否一致 |
copy方法 | 将输入流中的内容拷贝到输出流中,并可以指定字符编码。 |
copyLarge方法 | 将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝 |
linelterator方法 | 返回可以送代每一行内容的选代器 |
read方法 | 将输入流中的部分内容读入到字节数组中 |
readFully方法 | 将输入流中的所有内容读入到字节数组中 |
readLine方法 | 读入输入流内容中的一行 |
toBufferedlnputStream,toBufferedReader | 将输入转为带缓存的输入流。 |
toByteArray,toCharArray | 将输入流的内容转为字节数组、字符数组。 |
toString | 将输入流或数组中的内容转化为字符串。 |
write方法 | 向流里面写入内容 |
writeLine方法 | 向流里面写入一行内容 |
toString案例
package IO流.ApacheIO包;
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.IOException;
/**
* @author 缘友一世
* date 2022/10/27-22:44
*/
public class IOUtilsDemo {
public static void main(String[] args) throws IOException {
String content = IOUtils.toString(new FileInputStream("basic grammar/src/IO流/write.txt"), "utf-8");
System.out.println(content);
}
}