一种重复命名自动更名机制

        一、规则如下:

        设文件名x.x,如需要保存文件的目标位置已经有x.x,则自动命名本次保存文件的名称为x(1).x;如果x(1).x也已经存在,则命名为x(2).x。如此类推,直到不再重复。

        二、实现代码:

//保存文件之前看看有没有同名文件,有的话后面加(1),如果加了还有同名,就加(1+N)直到不再重名
                File file = null;
                int maxTry = 0xFFFF;
                String fileName = destFileName;
                for (int i = 0; i < maxTry; i++) {
                    if (i == 0) {
                        file = new File(dir, destFileName);
                        if (!file.exists()) {
                            file.createNewFile();
                            break;
                        }
                    }
                    if (i > 0) {
                        String fileNameSpilt[] = destFileName.split("\\.");
                        String fileNameWithoutLastPart = "";
                        //如果有后续名,去除后续名
                        for (int j = 0; j < fileNameSpilt.length - 1; j++) {
                            fileNameWithoutLastPart += fileNameSpilt[j];
                        }
                        if (i == maxTry) {
                            Log.e("DownloadUtil", "重试次数过多,以时间戳方式保存");
                            fileName = String.format("%d.%s", System.currentTimeMillis(), fileNameSpilt.length > 1 ? fileNameSpilt[fileNameSpilt.length - 1] : "");
                        } else {
                            fileName = String.format("%s(%d).%s", fileNameWithoutLastPart, i, fileNameSpilt.length > 1 ? fileNameSpilt[fileNameSpilt.length - 1] : "");
                        }
                        file = new File(dir, fileName);
                        if (!file.exists()) {
                            file.createNewFile();
                            break;
                        }
                    }
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值