Java 避免文件名重复

Java 避免文件名重复_第1张图片
先展示输出的文件
Java 避免文件名重复_第2张图片
filePath传入文件地址类似:“E:\test\withHead.xlsx”(注意在java中文件路径要双斜杠\\)

/**
* 调用getOutputStream()方法获取输出流
* @param fileName 创建的文件路径
* @return
*/
 private static OutputStream getOutputStream(String filePath) {
     
        OutputStream outputStream = null;//创建输出流
        try {
     
            //创建一个新的File调用工具类返回一个未重名的文件
            File file = FileUtils.isCoverFile(new File(filePath));
            outputStream = new FileOutputStream(file);
        } catch (Exception e) {
     
            e.printStackTrace();
        }
        return outputStream;
    }

下面是工具类的代码

public class FileUtils {
     
    /**
     * 是否覆盖已存在文件
     * @param file 下载的文件
     * @return
     */
    public static File isCoverFile(File file){
     
        return isCoverFile(file,false);
    }

    /**
     * 是否覆盖已存在文件
     * @param file  下载的文件
     * @param isCover   是否覆盖    true-覆盖   false-不覆盖
     * @return
     */
    public static File isCoverFile(File file,boolean isCover){
     
        if (isCover){
     
            return file;
        }
        return isFileExists(file,1);
    }

    /**
     * 文件是否已存在
     * 若存在,更改文件名
     * @param file  下载的文件
     * @param index 重新命名编号
     * @return
     */
     public static File isFileExists(File file,Integer index){
     
        //文件是否存在
        if (file.isFile()){
     
            //按最后一个 . 或 (1). 拆分
            String[] splitFileName = file.getPath().split("((\([0-9]+\))\.|\.)(?=[^.]*$)");
            //再拼接上编号
            String fileName = splitFileName[0] + "("+index+")."+ splitFileName[1];
            file = new File(fileName);
            //递归判断改名后的文件名是否重复
            return isFileExists(file,++index);
        }
        //文件不存在直接返回就完事了
        return file;
    }

个人第一篇博客,有问题请在评论区指出,希望能对你有帮助。
点个赞再走呗,多摸一会儿鱼:)

你可能感兴趣的:(java,文件相关,java,api,经验分享,编程语言)