文件名中的日期 returns 在 Windows 机器上运行时出错

Date in filename returns error runnig on Windows machine

我想创建一个文件并在文件名中使用项目名称和日期。这是我在我的 Unix 机器上使用了一段时间的简单 Java 代码。

    String fileName = projectName + "," + (date.toString());
    PrintStream pr = new PrintStream(new File(fileName));

最近,我试图在 Windows 机器上 运行 我的代码,但我得到了这个错误:

Exception in thread "main" java.io.FileNotFoundException: Test,Thu Sep 03 12:28:33 EDT 2015 (The filename, directory name, or volume label syntax is incorrect) 

当我从文件名中删除日期时,一切正常。任何建议文件名中的日期问题是什么以及我该如何解决它?

名称 Test,Thu Sep 03 12:28:33 EDT 2015 在 Windows 上无效,因为它包含 :: 保留用于分隔驱动器号的结尾(例如,c:)。 Windows.

的文件名中不能有冒号

而不是使用 date.toString(),它可能因 OS 而不同,并且可能会导致文件名的字符无效。尝试使用 d.getTime() 这样您的代码将是:

String fileName = projectName + "-" + date.getTime();

getTime() Returns 自 1970 年 1 月 1 日以来的毫秒数,00:00:00 GMT 由此 Date 对象表示。

还要更改逗号。因为它也可能有问题。

windows 中的文件名允许使用的字符有一些限制。

the official Windows file naming limitations at MSDN

我建议在调用 date.toString() 时指定格式。