zoukankan      html  css  js  c++  java
  • 类似百度网盘、window文件重命名规则 代码实现

    类似百度网盘、window文件重命名规则 代码实现


    最近我们公司在做一个类似百度网盘的一个公司内部网盘的项目,功能也比较简单,文件上传、解压、查看、下载等。我这边主要负责网盘服务后台接口的开发,有个业务场景就是,同一用户在同一文件夹相同格式下的不能有相同的名称,如果有,当需要在保存是,添加个(1)等,例如当前目录里 “我的文档.txt”,则再上传“我的文档.txt”需要修改为"我的文档(1).txt",如果当前目录里同时有"我的文档.txt,我的文档(1).txt",则再上传“我的文档.txt”需要修改为“我的文档(2).txt”,具体的需求可以参考百度网盘及window上的命名方式。

    因为技术水平的限制,之前想的用正则表达式去做匹配来实现这个功能,但是想了一段时间,还是没想出来,为了尽快完成项目,所以先用笨办法先实现,后面有时间了再用正则的方式做一下。下面是代码的实现。

        /**
         * 根据新增的文件名称 检查是否与已有的文件冲突 有冲突则重命名
         *
         * @param nameList
         * @param name
         * @return
         */
        private static String getNotExistName(List<String> nameList, String name) {
            while (true) {
                if (!nameList.contains(name)) return name;
                Integer left = name.lastIndexOf("(");
                if (left == -1) {
                    return getNotExistName(nameList, name + "(1)");
                }
                Integer right = name.indexOf(")", left);
                if (right == -1) {
                    return getNotExistName(nameList, name + "(1)");
                }
                if (right < name.length() - 1) return getNotExistName(nameList, name + "(1)");
                String substring = name.substring(left + 1, right);
                try {
                    Integer i = Integer.parseInt(substring) + 1;
                    return getNotExistName(nameList, name.substring(0, left) + "(" + i + ")");
    
                } catch (ClassCastException e) {
                    return getNotExistName(nameList, name + "(1)");
                }
            }
        }
    
    
    

    这个方法有俩个参数,第一个是参数是当前用户在当前文件夹当前后缀的所有文件名称的列表,第二个参数是要修改的名称,实现方式就是通过递归的方式来实现了,代码逻辑很简单。

  • 相关阅读:
    MySQL 数据恢复
    由 go orm 引发的探索
    beego 优雅重启
    2020年8月20日
    Linux 递归获取目录下所有满足条件的文件
    NET Core Kestrel部署HTTPS 一个服务器绑一个证书 一个服务器绑多个证书
    Flutter环境配置-windows
    Vue获取钉钉免登陆授权码(vue中的回调函数实践)
    【C#上位机必看】你们要的Iot物联网项目来了
    Windows Server系统部署MySQL数据库
  • 原文地址:https://www.cnblogs.com/jakaBlog/p/10740222.html
Copyright © 2011-2022 走看看