「这是我参与2022首次更文挑战的第29天,活动详情查看:2022首次更文挑战」
这篇我们讲云盘系统中的文件功能
删除目录及目录下的文件
1、dir:要删除的目录的文件路径,录删除成功返回true,否则返回false
2、!dir.endsWith(File.separator)如果dir不以文件分隔符结尾,自动添加文件分隔符
3、File dirFile = new File(dir);新建文件对象
4、(!dirFile.exists()) || (!dirFile.isDirectory())如果dir对应的文件不存在,或者不是一个目录,则退出
5、dirFile.listFiles()列出该文件夹下面的所有文件,之后进行遍历。
6、if (files[i].isFile())如果文件夹下面是文件,则进行删除
7、(files[i].isDirectory())如果文件夹下面是文件夹,进入删除文件夹的方法(会把该文件夹下面的文件遍历删除)
public static boolean deleteDirectory(String dir) {
if (!dir.endsWith(File.separator)) {
dir = dir + File.separator;
}
File dirFile = new File(dir);
if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
logger.warn("删除目录失败:" + dir + "不存在!");
return false;
}
boolean flag = true;
// 删除文件夹中的所有文件包括子目录
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
// 删除子文件
if (files[i].isFile()) {
flag = FileUtil.deleteFile(files[i].getAbsolutePath());
if (!flag) {
break;
}
}
// 删除子目录
else if (files[i].isDirectory()) {
flag = FileUtil.deleteDirectory(files[i].getAbsolutePath());
if (!flag) {
break;
}
}
}
if (!flag) {
logger.warn("删除目录失败!");
return false;
}
// 删除当前目录
if (dirFile.delete()) {
logger.warn("删除目录" + dir + "成功!");
return true;
} else {
return false;
}
}
文件移动
1、oldName:要移动的文件,newName:新的路径
2、如果移动的路径是一样的,那么提示用户:移动路径没有变化相同
3、在移动的文件夹里面,如果没找到文件,提示文件不存在
4、在移动的文件夹里面的文件和新的路径里存在一模一样的文件名,则提示已经存在!
5、最后实现文件移动oldfile.renameTo(newfile);
public static boolean renameFile(String oldName, String newName) {
// 路径
if (!oldName.equals(newName)) {
File oldfile = new File(oldName);
File newfile = new File(newName);
// 重命名文件不存在
if (!oldfile.exists()) {
return false;
}
// 若在该目录下已经有一个文件和新文件名相同,则不允许重命名
if (newfile.exists()) {
logger.warn(newName + "已经存在!");
return false;
} else {
return oldfile.renameTo(newfile);
}
} else {
logger.warn("移动路径没有变化相同...");
return false;
}
}
显示文件大小
1KB=1024Byte
1MB=1024KB
1GB=1024MB
文件大小超过1073741824字节,就是大于1GB
文件大小超过1048576字节小于1073741824字节,就是大于1MB小于1GB
文件大小超过1024字节小于1048576字节,就是大于1KB小于1MB
public static String fileSizeToString(long size) {
String sizeStr;
if (size >= 1073741824) {
sizeStr = size / 1073741824 + "GB";
} else if (size >= 1048576) {
sizeStr = size / 1048576 + "MB";
} else if (size >= 1024) {
sizeStr = size / 1024 + "KB";
} else if (size >= 1) {
sizeStr = size + "Byte";
} else {
sizeStr = "0";
}
return sizeStr;
}