commons-io
是Apache Commons项目的一个模块,提供了一系列处理I/O(输入/输出)操作的工具类和方法。它旨在简化Java I/O编程,并提供更多的功能和便利性。
读取文件内容为字符串
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
// 读取整个文件字符为一个字符串
System.out.println(FileUtils.readFileToString(new File(path), StandardCharsets.UTF_8));
// llls
// www
// pwd
// 你们
读取文件内容为List
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
// 读取整个文件字符为一个字符串
List list = FileUtils.readLines(new File(path), StandardCharsets.UTF_8);
for (String s : list) {
System.out.println(s);
// llls
// www
// pwd
// 你们
}
获取文件属性
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
// 获取文件名test
System.out.println(FilenameUtils.getBaseName(path)); // test
// 获取文件后缀
System.out.println(FilenameUtils.getExtension(path)); // txt
文件操作
复制文件
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
File file = new File(path);
File targetFile = new File(targetPath);
FileUtils.copyFile(file, targetFile);
移动文件
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
File file = new File(path);
File targetFile = new File(targetPath);
FileUtils.moveFile(file, targetFile);
安静地删除文件
String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
File file = new File(path);
FileUtils.deleteQuietly(file);
获取指定目录下特定扩展名的所有文件
String path = "C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources";
String[] extensions = new String[]{"jpg", "png", "avi"};
File file = new File(path);
// 第一个参数是要列出文件的目录,第二个参数是扩展名数组用于筛选文件,第三个参数是一个布尔值,用于指定是否包括子目录中的文件。
List fileList = (List) FileUtils.listFiles(file, extensions, true);
for (File f : fileList) {
System.out.println("找到文件:" + f.getAbsolutePath());
}
流操作
复制流
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
outputStream = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\target.txt");
IOUtils.copy(inputStream, outputStream);
System.out.println("文件复制成功");
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭输入流和输出流
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
输入流转换为字节数组
InputStream inputStream = null;
try {
inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
byte[] bytes = IOUtils.toByteArray(inputStream);
// 转换为字符串
String content = new String(bytes, "UTF-8");
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
}
文件过滤器
并逻辑过滤器
// 创建两个文件过滤器
FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);
// 创建同时满足两个条件的过滤器
FileFilter combinedFilter = FileFilterUtils.and((IOFileFilter) filter1, (IOFileFilter) filter2);
// 获取指定目录下满足过滤条件的文件
File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
File[] files = dir.listFiles(combinedFilter);
// 遍历符合条件的文件
for (File file : files) {
System.out.println(file.getName());
}
或逻辑过滤器
// 创建两个文件过滤器
FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);
// 创建同时满足两个条件的过滤器
FileFilter combinedFilter = FileFilterUtils.or((IOFileFilter) filter1, (IOFileFilter) filter2);
// 获取指定目录下满足过滤条件的文件
File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
File[] files = dir.listFiles(combinedFilter);
// 遍历符合条件的文件
for (File file : files) {
System.out.println(file.getName());
}
文件后缀过滤器
// 创建一个文件后缀过滤器
String suffix = ".txt";
FileFilter filter = FileFilterUtils.suffixFileFilter(suffix);
File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
File[] files = dir.listFiles(filter);
// 遍历符合条件的文件
for (File file : files) {
System.out.println(file.getName());
}
字节操作
输入流中读取数据到字节数组
// 创建一个字节数组作为缓冲区
byte[] buffer = new byte[1024];
// 从输入流中读取数据并存储到缓冲区
InputStream input = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
int bytesRead = IOUtils.read(input, buffer);
// 关闭输入流
IOUtils.closeQuietly(input);
// 处理读取到的数据
System.out.println("实际读取的字节数: " + bytesRead);
System.out.println("读取的数据: " + new String(buffer, 0, bytesRead));
将字节数组写入输出流
// 创建一个字节数组作为数据
byte[] data = "Hello, world!".getBytes();
// 创建一个输出流,并将字节数组写入到该流中
OutputStream output = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test1.txt");
IOUtils.write(data, output);
// 关闭输出流
IOUtils.closeQuietly(output);
目录操作
强制创建目录
File directory = new File("path/to/directory");
FileUtils.forceMkdir(directory);