递归自增小工具

最近开发需求遇到一个奇葩需求,用户重复上传文档,需要生成一个副本,比如用户上传了个a.pdf,然后又上传了a.pdf最后一个需要为a-副本.pdf。

好了,活干完了,开发找到产品,说要是在原来副本的基础上又上传一个a-副本.pdf,要生成a-副本-副本.pdf吗?产品傻了。我们给产品像个策略。重复的以后缀递增的方式保存。

a.pdf,有重复的为a-1.pdf,还有重复的依次为a-2.pdf,a-3.pdf  。。。。。n

完成后代码如下:

public  String getUniqueFileName(String originalFileName) {
    Long aLong = existWorkResult(originalFileName);
    if (ObjectUtils.isEmpty(aLong) || aLong.intValue() <= 0) {
        return originalFileName;
    }
    String baseName = originalFileName.substring(0, originalFileName.lastIndexOf('.'));
    String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));
    int count = 1;
    String newFileName;
    do {
        newFileName = baseName + "-" + count + extension;
        Long aLong0 = existWorkResult(newFileName);
        if (ObjectUtils.isEmpty(aLong0) || aLong0.intValue() <= 0) {
            break;
        }
        count++;
    } while (true);
    return newFileName;
}

 使用场景不一定是文件名称,在数据库有主键自增,但要是不在数据库中该怎么办?比如我连续签到几天送个小奖品,出现短签从零开始,也可以使用,当然了也可以使用redis自增

 

posted @ 2024-12-11 22:10  余生请多指教ANT  阅读(22)  评论(0)    收藏  举报