如何在java中基于时间戳将文件移动到年/月/日文件夹

如何在java中基于时间戳将文件移动到年/月/日文件夹,java,date,timestamp,filesystems,Java,Date,Timestamp,Filesystems,我有文件名为timestamp的文件。我想根据时间戳将这些文件移到年/月/日文件夹中,时间戳只是文件名 例如:fileName=2017-11-2_23-59-59yyy-mm-dd_HH-mm-SS。现在,我想将此文件移动到2017文件夹,并在该文件夹内11个月文件夹和2个日期文件夹内,如果该文件夹不存在,则创建一个 因此,所有日期文件夹应位于月份文件夹中,月份文件夹应位于年份文件夹中。这是我需要的文件夹结构。这可能对您有所帮助: String file = form.getFile().ge

我有文件名为timestamp的文件。我想根据时间戳将这些文件移到年/月/日文件夹中,时间戳只是文件名

例如:fileName=2017-11-2_23-59-59yyy-mm-dd_HH-mm-SS。现在,我想将此文件移动到2017文件夹,并在该文件夹内11个月文件夹和2个日期文件夹内,如果该文件夹不存在,则创建一个


因此,所有日期文件夹应位于月份文件夹中,月份文件夹应位于年份文件夹中。这是我需要的文件夹结构。

这可能对您有所帮助:

String file = form.getFile().getOriginalFilename();
String[] dateParts = file.split("-");
String year = dateParts[0]; 
String month = dateParts[1]; 
String day = dateParts[2]; 
String UPLOADED_FOLDER = "C://Users//pandeyv//Desktop//"+year+"//"+month+"//"+day+"//";
File dir = new File(UPLOADED_FOLDER);
if (!dir.exists())
    dir.mkdirs();
希望这有帮助

我假设您有一个指向文件的路径。也许你用的是路径,去弄一条。或者获取包含文件的文件夹目录的路径,然后获取files.list以获取文件夹中每个文件的路径。从路径中获取文件名,例如2017-11-2_23-59-59

我建议您使用DateTimeFormatter和LocalDateTime将文件名解析为日期时间。为DateTimeFormatter指定格式模式时,请注意它区分大小写。你需要一个像uu-M-d_H-mm-ss这样的模式;请调整你自己

为目标文件夹构建新路径,例如2017/11/02。使用getYear、getMonthValue和getDayOfMonth方法从日期时间中获取年、月和日。或者使用格式化程序将它们作为字符串而不是整数获取。我希望所有月份和日期文件夹都有两位数的名称,9月份为09,2月份为02。在某些情况下,这将帮助您获得正确的时间排序;然而,你知道你的要求,我不知道。同样,使用path.get构建路径。然后使用Files.createDirectories确保在文件系统中创建嵌套文件夹。如果嵌套文件夹已经存在,则该方法不执行任何操作,只返回路径

使用Path.resolve将文件名附加到文件夹路径。最后,Files.move会将文件移动到目标文件夹


愉快的编码。

这似乎相当简单。你在挣扎哪一部分?好吧,解析文件名,创建目录(如果它们还不存在),然后移动文件。所有这些都是相当简单的任务。但您需要做一些研究,阅读JavaIO教程和javadoc。这是开发人员工作的一部分。这是在一个时区内发生的还是仅在UTC的一个偏移处发生的?不知道这些时间戳的区域偏移量,我有点不舒服。或者他们都是UTC?在UTC中按日期存储文件是可以的吗?这个问题对于堆栈溢出来说太广泛了。这里的问题必须狭隘地集中在一个特定的编程问题上,而不是要求提供一系列常见编程琐事的教程。我投票决定结束。非常感谢各位。我完成了。