目录
一、概述
二、代码演示
一、概述
在我们业务需求中,要创建文件或文件目录,删除目录,下面我们通过代码来实现这些方法。
创建文件和目录的关键技术点如下
- File类的createNewFile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败
- File类的mkdir方法根据抽象路径创建目录
- File类的mkdirs方法根据抽象路径创建目录,包括创建必需但不存在的父目录
- File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。
- 除mkdirs方法外,以上方法在创建文件和目录时,必须保证目标文件不存在,而且父目录存在,否则会创建失败
二、代码演示
@Slf4j(topic = "CreateFileUtil")
public class CreateFileUtil {
/**
* 创建文件
* @param destFileName 目标文件
* @date: 2021/6/10 16:35
* @return: boolean
*/
public static boolean createFile(String destFileName) {
File file = new File(destFileName);
if (file.exists()) {
log.info("创建单个文件" + destFileName + "失败,目标文件已存在!");
return false;
}
if (destFileName.endsWith(File.separator)) {
log.info("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
return false;
}
//判断目标文件所在的目录是否存在
if (!file.getParentFile().exists()) {
//如果目标文件所在的目录不存在,则创建父目录
log.info("目标文件所在目录不存在,准备创建它!");
if (!file.getParentFile().mkdirs()) {
log.info("创建目标文件所在目录失败!");
return false;
}
}
//创建目标文件
try {
if (file.createNewFile()) {
log.info("创建单个文件" + destFileName + "成功!");
return true;
} else {
log.info("创建单个文件" + destFileName + "失败!");
return false;
}
} catch (IOException e) {
e.printStackTrace();
log.info("创建单个文件" + destFileName + "失败!" + e.getMessage());
return false;
}
}
/**
* 创建目录
* @param destDirName
* @date: 2021/6/10 9:53
* @return: boolean
*/
public static boolean createDir(String destDirName) {
File dir = new File(destDirName);
if (dir.exists()) {
log.info("创建目录" + destDirName + "失败,目标目录已经存在");
return false;
}
if (!destDirName.endsWith(File.separator)) {
destDirName = destDirName + File.separator;
}
//创建目录
if (dir.mkdirs()) {
log.info("创建目录" + destDirName + "成功!");
return true;
} else {
log.info("创建目录" + destDirName + "失败!");
return false;
}
}
/**
* 创建目录临时文件
* @param prefix
* @param suffix
* @param dirName
* @date: 2021/6/10 9:54
* @return: java.lang.String
*/
public static String createTempFile(String prefix, String suffix, String dirName) {
File tempFile = null;
if (dirName == null) {
try {
//在默认文件夹下创建临时文件
tempFile = File.createTempFile(prefix, suffix);
//返回临时文件的路径
return tempFile.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
log.info("创建临时文件失败!" + e.getMessage());
return null;
}
} else {
File dir = new File(dirName);
//如果临时文件所在目录不存在,首先创建
if (!dir.exists()) {
if (!CreateFileUtil.createDir(dirName)) {
log.info("创建临时文件失败,不能创建临时文件所在的目录!");
return null;
}
}
try {
//在指定目录下创建临时文件
tempFile = File.createTempFile(prefix, suffix, dir);
return tempFile.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
log.info("创建临时文件失败!" + e.getMessage());
return null;
}
}
}
public static boolean deleteDirectory(String directory){
File dir = new File(directory);
if(dir.isDirectory() == false) {
log.info("Not a directory. Do nothing");
return Boolean.FALSE;
}
File[] listFiles = dir.listFiles();
for(File file : listFiles){
log.info("deleting ={}",file.getName());
file.delete();
}
//now directory is empty, so we can delete it
log.info("Deleting Directory. Success = {}",dir.delete());
return Boolean.TRUE;
}
public static void main(String[] args) {
//创建目录
// String dirName = "D:/work/temp/temp0/temp1";
// CreateFileUtil.createDir(dirName);
//
// //创建文件
// String fileName = dirName + "/temp2/tempFile.txt";
// CreateFileUtil.createFile(fileName);
//
// //创建临时文件
// String prefix = "temp";
// String suffix = ".txt";
// for (int i = 0; i < 10; i++) {
// log.info("创建了临时文件:"
// + CreateFileUtil.createTempFile(prefix, suffix, dirName));
// }
// //在默认目录下创建临时文件
// for (int i = 0; i < 10; i++) {
// log.info("在默认目录下创建了临时文件:"
// + CreateFileUtil.createTempFile(prefix, suffix, null));
// }
// 删除磁盘目录
String directoryName = "D:\\data\\源数据\\喵喵喵_H26052111304453\\源数据_B08062111321547";
deleteDirectory(directoryName);
}
}