2022首次更文挑战第29天 | 云盘系统的开发03

177 阅读1分钟

「这是我参与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;
}