如何根据需要生成文件名?

时间:2016-12-07 10:26:21

标签: java

我被建议使用此代码来解决我的一个问题:

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})}是如何运作的。

提前致谢

1 个答案:

答案 0 :(得分:5)

请尝试{2,choice,0#|0<{2,number,integer}}

解释每个部分

  • 2 - 参数索引,基于零
  • choice - 格式类型,在本例中为选项列表
  • 0# - 如果参数为零,则为空字符串
  • | - 选择之间的分隔符
  • 0< - 如果参数大于零
  • {2,number,integer} - 第二种选择的子格式意味着索引2的参数格式化为整数。