如果名称存在,则创建并增加文件名

时间:2014-11-24 00:53:15

标签: java file

我有一个存储测试问题的文件。

"Test.ser"

我希望能够创建具有相同名称的文件,但每次有人使用Test来存储答案时都会附加一些递增器。

"Test1.ser"
"Test2.ser"
   ...

但是,我想不出实现这个的方法。计数器可以工作,但如果有人重新运行程序,计数器将重置。

有没有人知道这是怎么回事?非常感谢!

编辑:

int count = 1;
while (searching) {
    fileName = survey.name + Integer.toString(count) + ".ser";
    f = new File(fileName);

    if(f.exists()) {
        count++;
    } else {
        searching = false;
    }
} // Proceed to use file name

无法通过file_name1.ser

增加它

2 个答案:

答案 0 :(得分:4)

我建议您使用String.format(String, Object...)File.exists()

public static void main(String[] args) {
    String fmt = "Test%02d.ser";
    File f = null;
    for (int i = 1; i < 100; i++) {
        f = new File(String.format(fmt, i));
        if (!f.exists()) {
            break;
        }
    }
    try {
        System.out.println(f.getCanonicalPath());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

修改

正如评论中指出的那样,这只重试了100次。如果您想支持超过100次重试,可以编写for循环,如

for (int i = 1;; i++) 

答案 1 :(得分:2)

解决此问题的简单方法是将日期和时间附加到您的文件名中。

例如使用格式(YYYYMMDD-HHMM):

Test-20141122_2058.ser
Test-20141123_1931.ser
Test-20141123_2157.ser