无法使用DateTime创建文件夹作为名称

时间:2016-01-14 23:15:36

标签: java file

我正在尝试使用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();

    }

4 个答案:

答案 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(":", "");