如何根据java

时间:2017-11-02 20:46:25

标签: java date timestamp filesystems

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

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

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

2 个答案:

答案 0 :(得分:1)

这可能对您有所帮助:

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();

希望这有帮助!

答案 1 :(得分:0)

我假设你的文件有Path。也许您使用Paths.get()来获得一个。或者获取包含文件的文件夹(目录)的路径,然后获取Files.list()以获取文件夹中每个文件的路径。在Path中,获取文件名称(例如2017-11-2_23-59-59)。

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

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

使用Path.resolve()将文件名附加到文件夹路径。最后Files.move()会将您的文件移至目标文件夹。

快乐的编码。