文件名中的日期 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()
时指定格式。
我想创建一个文件并在文件名中使用项目名称和日期。这是我在我的 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()
时指定格式。