JavaSE文件操作工具类FileUtil详解
简介
JavaSE中提供了File类用来操作文件或目录。但是,操作文件或目录的流程较为繁琐,如果我们需要经常操作文件或目录,就需要编写大量的重复代码。为了解决这个问题,我们可以将文件操作的常用方法封装在一个工具类中,从而减少代码量和提高开发效率。本文将介绍一个JavaSE文件操作的工具类FileUtil。
FileUtil的设计思路
在设计FileUtil时,我们需要考虑以下因素:
1. 具有创建文件、删除文件、文件重命名和复制文件等基本文件操作的方法
2. 对于目录的操作,应当包含创建目录、删除目录及其目录下的文件和获取目录下的所有文件等方法
3. 方法的输入应当是可变参数列表,方便用户传入任意多个文件或目录路径
在这些因素的基础上,我们可以设计出FileUtil,并附上代码和注释。
FileUtil代码及注释
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件操作工具类FileUtil
*/
public class FileUtil {
/**
* 创建目录
*
* @param dirs 需要创建的目录路径
* @return 创建成功返回true,否则返回false
*/
public static boolean createDirs(String... dirs) {
for (String dir : dirs) {
File file = new File(dir);
if (!file.exists()) {
if (!file.mkdirs()) {
return false;
}
}
}
return true;
}
/**
* 创建文件
*
* @param file 需要创建的文件
* @return 创建成功返回true,否则返回false
*/
public static boolean createFile(File file) {
if (!file.exists()) {
try {
if (!file.createNewFile()) {
return false;
}
} catch (IOException e) {
return false;
}
}
return true;
}
/**
* 删除文件
*
* @param files 需要删除的文件
* @return 删除成功返回true,否则返回false
*/
public static boolean deleteFiles(File... files) {
for (File file : files) {
if (!file.exists()) {
return false;
}
if (file.isDirectory()) {
deleteFiles(file.listFiles());
}
if (!file.delete()) {
return false;
}
}
return true;
}
/**
* 获取目录下所有文件
*
* @param dir 目录路径
* @return 目录下的所有文件
*/
public static File[] listFiles(String dir) {
File file = new File(dir);
if (!file.isDirectory()) {
return null;
}
return file.listFiles();
}
/**
* 文件复制
*
* @param src 源文件
* @param dest 目标文件
* @return 复制成功返回true,否则返回false
*/
public static boolean copyFile(String src, String dest) {
try (FileInputStream in = new FileInputStream(src);
FileOutputStream out = new FileOutputStream(dest)) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}
return true;
}
/**
* 文件重命名
*
* @param oldFile 原文件
* @param newFile 新文件
* @return 重命名成功返回true,否则返回false
*/
public static boolean renameFile(File oldFile, File newFile) {
if (!oldFile.exists() || newFile.exists()) {
return false;
}
if (!oldFile.renameTo(newFile)) {
return false;
} else {
return true;
}
}
public static void main(String[] args) {
// 创建目录示例
String dirs1 = "D:/testDir1";
String dirs2 = "D:/testDir2";
boolean res1 = createDirs(dirs1, dirs2);
System.out.println("创建目录:" + res1);
// 创建文件示例
File file = new File("D:/testDir1/test.txt");
boolean res2 = createFile(file);
System.out.println("创建文件:" + res2);
// 复制文件示例
String src = "D:/testDir1/test.txt";
String dest = "D:/testDir2/test.txt";
boolean res3 = copyFile(src, dest);
System.out.println("复制文件:" + res3);
// 改名示例
File oldFile = new File("D:/testDir1/test.txt");
File newFile = new File("D:/testDir1/newTest.txt");
boolean res4 = renameFile(oldFile, newFile);
System.out.println("重命名文件:" + res4);
// 删除目录及其所有文件示例
boolean res5 = deleteFiles(new File("D:/testDir1"), new File("D:/testDir2"));
System.out.println("删除目录:" + res5);
}
}
示例说明
- 创建目录示例
String dirs1 = "D:/testDir1";
String dirs2 = "D:/testDir2";
boolean res1 = createDirs(dirs1, dirs2);
System.out.println("创建目录:" + res1);
这个示例展示了如何创建一个或多个目录。我们只需要传入一个或多个目录路径的可变参数即可,后面会输出创建目录的结果。
- 删除目录及其所有文件示例
boolean res5 = deleteFiles(new File("D:/testDir1"), new File("D:/testDir2"));
System.out.println("删除目录:" + res5);
这个示例展示了如何删除一个或多个目录。我们只需要传入一个或多个目录路径描述的File对象的可变参数即可,后面会输出删除目录的结果。
总结
通过对FileUtil的代码分析及示例说明,可以看出它确实方便了JavaSE文件操作的开发。我们可以使用它来快速定制我们需要的文件操作,节省了很多代码量。因此,对于经常进行JavaSE文件操作的开发者,使用FileUtil是非常值得的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaSE文件操作工具类FileUtil详解 - Python技术站