我被建议使用此代码来解决我的一个问题:
private static final String PATH_FMT =
"C:\\Users\\{0}\\Desktop\\Bloomberg Rechnung-{1,date,yyyyMMdd}{2,choice,0< ({2})}.xlsx";
private File save() throws IOException {
Date now = new Date();
for (int fCounter = 0; ; fCounter++) {
Path path = Paths.get(
MessageFormat.format(PATH_FMT, this.username, now, fCounter)
);
try (OutputStream out = Files.newOutputStream(path, CREATE_NEW)) {
this.wb.write(out);
this.wb.close();
return path.toFile();
} catch (FileAlreadyExistsException incrCounterAndRetry) {
}
}
}
可悲的是,这段代码并不完全符合我的要求。它应该创建一个文件。它应该创建的第一个文件没有其他名称的文件,不应该有一个计数器。创建的第二个文件应该在文件名中包含计数器(无论启动的位置都无关紧要)。我目前得到第一个文件与计数器0的文件。任何人都可以帮助我解决这个问题?也许有人可以向我解释{2,choice,0< ({2})}
是如何运作的。
提前致谢
答案 0 :(得分:5)
请尝试{2,choice,0#|0<{2,number,integer}}
。
解释每个部分
2
- 参数索引,基于零choice
- 格式类型,在本例中为选项列表0#
- 如果参数为零,则为空字符串|
- 选择之间的分隔符0<
- 如果参数大于零{2,number,integer}
- 第二种选择的子格式意味着索引2的参数格式化为整数。