导出文件,如果文件名重复则在后面加上(数字)--> xxxx(2).xxx

原创 2015年07月08日 16:18:58

一般在windows中如果复制同一个文件在同一个路径下,那么文件名后面会出现一个“-副本”的格式的文件名,现在要求成为“(2)”格式的文件名,特别是在单据导出的时候,代码如下:

/**
     * 如果某个路径下已经存在了与要保存的文件名重复了,则在新的文件后面加(1)。。。。
     * @param paths
     * @param filename
     * @param num
     * @return
     */
    public static String getFileName(String paths, String filename, int num) {
        File file = null;
        String[] filenameArr = filename.split("\\.");
        int length = filenameArr.length;
        String filenameStr="";
        //此处的目的是为了避免文件名称含有“.”的文件名重复时,出错,我们必须保证是在最后一个“.”的前面加上“(2)”
        for(int i=0;i<=length-2;i++){
            filenameStr = filenameStr+ filenameArr[i]+".";
        }
        if (num > 0) {
            file = new File(paths + "\\" + filenameStr.substring(0, filenameStr.length()-1) + "(" + String.valueOf(num == 1 ? 2 : num) + ")." + filenameArr[filenameArr.length - 1]);
        } else {
            file = new File(paths + "\\" + filename);
        }

        if (file.exists()) {
            return getFileName(paths, filename, ++num);
        } else {
            if (num > 0) {
                return paths + "\\" + filenameStr.substring(0, filenameStr.length()-1) + "(" + String.valueOf(num == 1 ? 2 : num) + ")." + filenameArr[filenameArr.length - 1];
            } else {
                return paths + "\\" + filename;
            }
        }
    }

测试结果如下:


版权声明:本文为博主原创文章,未经博主允许不得转载。

java编程之输入并保存到文本文件

/* *编程实现以下功能 在屏幕上显示:输入姓名,然后将用户输入的姓名保存到文本文件中,重复进行,直到用户输入空字符串为止。 */ import java.io.*; public class...
  • u010274673
  • u010274673
  • 2013年05月10日 18:58
  • 1681

多个js中如何避免方法名重复

我想很多人面试的时候都会遇到这个问题,在最开始进入it行业的时候其实我也不懂该怎么回答,后来很多人告诉我用闭包,然后再有面试我就直接回答闭包,但其实我自己并不是太明白闭包的概念,也根本不了解它是如何来...
  • accumulation_dh1992
  • accumulation_dh1992
  • 2015年11月10日 10:16
  • 2367

精彩编程与编程技巧-用VB生成EXE文件后,如何在后面加上参数?这个参数怎样传给VB...

  • 2009年10月10日 20:11
  • 1KB
  • 下载

Codeforces Round #350 (Div. 2) F. Restore a Number(有一位数为n的数,在后面添上n这个数,然后将所有的数字打乱输出,再给你一串原数字的子串,输出最小)

F. Restore a Number time limit per test 2 seconds memory limit per test 256 megabytes ...
  • acm_fighting
  • acm_fighting
  • 2016年05月08日 15:49
  • 916

給出的文件里的表達式分別進行計算并将結果添加在后面

  • 2008年12月11日 09:14
  • 13KB
  • 下载

cocos2dx-js web适配(重点在后面)

一、 cocos 手机游戏常用的屏幕适配方式: 1、ResolutionPolicy::SHOW_ALL屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较(小)者作为宽、高的缩放因子。保证了...
  • iamlegendary
  • iamlegendary
  • 2016年09月14日 14:57
  • 869

再一次看到了cin cout比scanf和printf耗时。(有关文件差异的比较方法在后面)

在做这题时 用cin cout的话 耗时
  • leo1949asd
  • leo1949asd
  • 2014年04月23日 11:01
  • 1093

MT2503D的官方DATASHEET,密码是PDF文件名后面的数字

  • 2017年05月21日 17:42
  • 9.37MB
  • 下载

给定一个目录,要求按照层次显示目录结构信息,文件名后面加上*或\来表示文件夹

/**  * 要求:  * 给定一个目录,要求按照层次显示目录结构信息,文件名后面加上*或\来表示文件夹  * 案例设计:  * 1;使用到递归算法  * 2;使用File类中的ListFi...
  • zhyzh134
  • zhyzh134
  • 2016年02月28日 20:23
  • 165

更改表中列的顺序,当中插入一个列.而不是在后面添加

--更改表中列的顺序,当中插入一个列.而不是在后面添加 第一种方法,进入sys系统用户 select object_id   from all_objects   where owne...
  • TianQingSeDengYanY
  • TianQingSeDengYanY
  • 2017年03月13日 11:36
  • 103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:导出文件,如果文件名重复则在后面加上(数字)--> xxxx(2).xxx
举报原因:
原因补充:

(最多只允许输入30个字)