Java Can';t使用DateTime作为名称创建文件夹
我正在尝试使用时间戳作为文件夹名称创建文件夹。当我在下面的代码中使用timeStamp变量时,我正在使用的代码不会创建文件夹。但是如果我像这样直接设置文件夹名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.
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禁止:
,但
可以。