Java 创建并增加文件名(如果名称存在)
我有一个存储测试问题的文件Java 创建并增加文件名(如果名称存在),java,file,Java,File,我有一个存储测试问题的文件 "Test.ser" 我希望能够创建具有相同名称的文件,但每次有人参加测试时都会附加一些增量,以存储答案 "Test1.ser" "Test2.ser" ... 然而,我想不出一个方法来实现这一点。计数器可以工作,但如果有人重新运行程序,计数器将重置 有人知道这是怎么可能的吗?非常感谢 编辑: 无法将其增量超过文件名1.ser,我建议您使用 public static void main(String[] args) { String fmt = "
"Test.ser"
我希望能够创建具有相同名称的文件,但每次有人参加测试时都会附加一些增量,以存储答案
"Test1.ser"
"Test2.ser"
...
然而,我想不出一个方法来实现这一点。计数器可以工作,但如果有人重新运行程序,计数器将重置
有人知道这是怎么可能的吗?非常感谢
编辑:
无法将其增量超过文件名1.ser,我建议您使用
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();
}
}
解决这个问题的一个简单方法是在文件名后面加上日期和时间 例如,使用格式(YYYYMMDD-HHMM):
只要不断增加计数器并尝试文件名,直到文件名不存在。@JasonC谢谢Jason,我没有想到这一点。我将尝试使用这种方法!类文件有一个exists()方法。只需创建一系列文件名,直到找到一个未使用的文件名。尝试使用您的策略,但会出现问题。我发布了一个编辑。如果存在100个文件,这将抛出一个NPE。可能不是令人满意的行为。@JasonC我决定如果你考试失败100次,它应该很快失败,我认为101次考试不会有帮助。我的意思是,它应该失败,因为它应该有比NPE更多的信息。(“不可取”)指的是抛出NPE,而不是在100个文件之后失败,抱歉。)添加到这一点:考虑添加秒,或者在结尾(或者甚至进程或线程ID)上随机字符串,如果多个用户可以同时进行此测试,或者测试可能需要不到60秒的时间才能完成。这种方法很适合创建文件,但在读取文件时不实用。为什么不呢?您可以使用正则表达式获取名称,这相当快。也许我应该在日期和时间之前添加一个answersId,这样您就可以通过answersId轻松地读取文件。
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();
}
}
for (int i = 1;; i++)
Test-20141122_2058.ser
Test-20141123_1931.ser
Test-20141123_2157.ser