我正在尝试使用TimeStamp作为文件夹名称创建一个文件夹。当我在下面的代码中使用timeStamp变量时,我正在使用的代码不会创建该文件夹。但是,如果我直接设置文件夹名称...
File dir = new File("Hello")
创建文件夹。这是使用日期和时间设置文件夹名称的正确方法吗?
public void logEmData(String reason,Campus c ) throws IOException
{
LocalDateTime time = LocalDateTime.now();
try(FileWriter writer = new FileWriter(file, true))
{
writer.write("Building " + c.getName() + " Entered Emergency Mode" + System.lineSeparator());
writer.write(" Reason: " + reason + System.lineSeparator());
writer.write(time.toString() + System.lineSeparator());
//Create folder
String timeStamp = "EM_" + time;
File dir = new File(timeStamp);
dir.mkdir();
}
答案 0 :(得分:4)
2015-01-14T16:00:49.455
以大致相同的格式为您提供日期::
。
-
是Windows下文件夹创建的问题,因为它是reserved character。您可能需要考虑格式化字符串以将其更改为AnyObject
。
答案 1 :(得分:1)
大多数日期格式包含Windows会阻塞的字符,尤其是MM/dd/yyyy
(\
)或包含时间(:
)的任何内容。
最佳方法,也具有词法排序的优点,是使用YYYY-MM-dd
的ISO-8601格式,或者如果您绝对需要时间信息,则使用下划线作为分隔符而不是冒号。
答案 2 :(得分:0)
将Java NIO2用于此目的。
Files.createDirectory(Paths.get("path-to-dir"));
我认为这会有所帮助。并使用日期的自定义格式,如MM-dd-yyyy。
答案 3 :(得分:0)
LocalDateTime.now.toString()
产生如下字符串:
2018-01-01T00:00:00.000
在Windows上,这不是有效的目录名称,因为目录名称中不允许使用:
字符。
因此,您可以删除:
或替换为其他内容:
String directoryName = LocalDateTime.now.toString().replaceAll(":", "");