Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t使用DateTime作为名称创建文件夹_Java_File - Fatal编程技术网

Java Can';t使用DateTime作为名称创建文件夹

Java Can';t使用DateTime作为名称创建文件夹,java,file,Java,File,我正在尝试使用时间戳作为文件夹名称创建文件夹。当我在下面的代码中使用timeStamp变量时,我正在使用的代码不会创建文件夹。但是如果我像这样直接设置文件夹名 File dir = new File("Hello") 文件夹已创建。这是使用日期和时间设置文件夹名称的正确方法吗 public void logEmData(String reason,Campus c ) throws IOException { LocalDateTime time = LocalDateTime.

我正在尝试使用时间戳作为文件夹名称创建文件夹。当我在下面的代码中使用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();

    }

为此,请使用JavaNIO2

Files.createDirectory(Paths.get("path-to-dir"));
我想这会有帮助的。并对日期使用自定义格式,如MM dd yyyy。

LocalDateTime.now()
获取格式大致如下的日期:
2015-01-14T16:00:49.455


在Windows下创建文件夹时是一个有问题的字符,因为它是一个字符。您可能需要考虑将字符串格式化以将其更改为<代码> ->代码> ./P> < P>大多数日期格式包含Windows将阻塞的字符,特别是<代码> MM/DD/YYYY < /代码>(<代码> \代码>)或包含时间的任何内容(<代码>:/COD>)。
最好的方法(也具有按词汇排序的优点)是使用ISO-8601格式的
YYYY-MM-dd
,或者如果您绝对需要时间信息,则使用下划线作为分隔符而不是冒号。

LocalDateTime.now.toString()生成如下字符串:

2018-01-01T00:00:00.000
在Windows上,这不是有效的目录名,因为目录名上不允许使用
字符

因此,您可以删除
或替换为其他内容:

 String directoryName = LocalDateTime.now.toString().replaceAll(":", "");

LocalDateTime
可能包含
/
或\和
字符,这对于文件夹名称来说是非法字符(至少在Windows下)@MadProgrammer要创建
`
字符,请尝试使用
\
之类的
\
对其进行转义。或者要创建
\
,您需要用两个
`
包围它,就像
```
(该死,我太晚了)。在Unix上,
都是路径的有效字符。Windows禁止
,但
可以。