避免文件名重复

给各位上班的苦逼养养眼
先展示输出的文件
在这里插入图片描述
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;
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值