KKFileView(六)——文件管理工具

2021SC@SDUSC

项目设置了KKFileUtils工具类来对文件进行管理,该类提供了处理类时的基本操作,避免了代码的冗余

1、isHttpUrl(URL url)方法:判断是否为url资源

判断的方法很简单,即是否以http开头还是以file开头

url.getProtocol().toLowerCase().startsWith("file") || url.getProtocol().toLowerCase().startsWith("http")

2、isFtpUrl(URL url)方法:判断是否为ftp资源

方法为判断url的名称是否包含ftp

"ftp".equalsIgnoreCase(url.getProtocol())

3、deleteFileByName(String fileName):根据文件名删除文件

首先判断文件是否存在,并且是否为一个文件而不是一个目录,如果存在并且是单个文件则可以直接删除,否则删除失败

File file = new File(fileName);
        // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                LOGGER.info("删除单个文件" + fileName + "成功!");
                return true;
            } else {
                LOGGER.info("删除单个文件" + fileName + "失败!");
                return false;
            }
        } else {
            LOGGER.info("删除单个文件失败:" + fileName + "不存在!");
            return false;
        }

4、getFileEncode(File file):检测文件编码格式 

用到引入的工具类CharsetPrinter判断文件编码格式

 public static String getFileEncode(File file) {
        CharsetPrinter cp = new CharsetPrinter();
        try {
            String encoding = cp.guessEncoding(file);
            LOGGER.info("检测到文件【{}】编码: {}", file.getAbsolutePath(), encoding);
            return encoding;
        } catch (IOException e) {
            LOGGER.warn("文件编码获取失败,采用默认的编码格式:UTF-8", e);
            return DEFAULT_FILE_ENCODING;
        }
    }

5、suffixFromFileName(String fileName):得到文件后缀

fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();

6、deleteFileByPath(String filePath):根据文件绝对路径删除文件

方法跟上面类似,同样是先判断是否存在

 File file = new File(filePath);
        if (file.exists() && !file.delete()) {
            LOGGER.warn("压缩包源文件删除失败:{}!", filePath);
        }

7、 deleteDirectory(String dir):删除目录及目录下的文件

dir————要删除的目录的文件路径

 如果dir不以文件分隔符结尾,自动添加文件分隔符

if (!dir.endsWith(File.separator)) {
            dir = dir + File.separator;
        }
        File dirFile = new File(dir);

 如果dir对应的文件不存在,或者不是一个目录,则退出

if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
            LOGGER.info("删除目录失败:" + dir + "不存在!");
            return false;
        }

 删除文件夹中的所有文件包括子目录,通过遍历,得到每一个子文件,然后判断该文件是文件还是目录,并调用上面以及构造好的方法进行删除。

for (int i = 0; i < Objects.requireNonNull(files).length; i++) {
            // 删除子文件
            if (files[i].isFile()) {
                flag = KkFileUtils.deleteFileByName(files[i].getAbsolutePath());
                if (!flag) {
                    break;
                }
            } else if (files[i].isDirectory()) {
                // 删除子目录
                flag = KkFileUtils.deleteDirectory(files[i].getAbsolutePath());
                if (!flag) {
                    break;
                }
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值