如何根据 java 中的时间戳将文件移动到 year/month/day 文件夹
How to move files to year/month/day folders based on timestamp in java
我有以时间戳作为文件名的文件。我想根据它的时间戳将这些文件移动到 years/month/day 文件夹中,它只是文件名。
例如:文件名=2017-11-2_23-59-59(YYYY-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();
我假设你有一个 Path
以某种方式进入你的文件。也许您使用 Paths.get()
得到一个。或者获取保存文件的文件夹(目录)的路径,然后 Files.list()
获取文件夹中每个文件的路径。从您的 Path
中获取文件名(例如 2017-11-2_23-59-59
)。
我建议您使用 DateTimeFormatter
和 LocalDateTime
将文件名解析为日期时间。在为 DateTimeFormatter
指定格式模式时,请注意区分大小写。你需要像 uuuu-M-d_H-mm-ss
这样的模式;请自己微调。
为您的目标文件夹构建一个新的 Path
(例如,2017/11/02
)。使用方法 getYear
、getMonthValue
和 getDayOfMonth
从日期时间获取年、月和日。或者使用格式化程序将它们作为字符串而不是 int
s 获取。我更愿意为所有月份和日期文件夹使用两位数的名称(09
表示九月,02
表示第二个月)。在某些情况下,这将帮助您获得正确的时间顺序排序;但是,您知道您的要求,我不知道。同样,使用 Paths.get()
构建路径。然后使用 Files.createDirectories()
确保您的嵌套文件夹已在文件系统中创建(如果它们已经存在,则该方法不执行任何操作,只是 returns 路径)。
使用 Path.resolve()
将您的文件名附加到文件夹路径。最后 Files.move()
会将您的文件移动到目标文件夹。
我有以时间戳作为文件名的文件。我想根据它的时间戳将这些文件移动到 years/month/day 文件夹中,它只是文件名。
例如:文件名=2017-11-2_23-59-59(YYYY-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();
我假设你有一个 Path
以某种方式进入你的文件。也许您使用 Paths.get()
得到一个。或者获取保存文件的文件夹(目录)的路径,然后 Files.list()
获取文件夹中每个文件的路径。从您的 Path
中获取文件名(例如 2017-11-2_23-59-59
)。
我建议您使用 DateTimeFormatter
和 LocalDateTime
将文件名解析为日期时间。在为 DateTimeFormatter
指定格式模式时,请注意区分大小写。你需要像 uuuu-M-d_H-mm-ss
这样的模式;请自己微调。
为您的目标文件夹构建一个新的 Path
(例如,2017/11/02
)。使用方法 getYear
、getMonthValue
和 getDayOfMonth
从日期时间获取年、月和日。或者使用格式化程序将它们作为字符串而不是 int
s 获取。我更愿意为所有月份和日期文件夹使用两位数的名称(09
表示九月,02
表示第二个月)。在某些情况下,这将帮助您获得正确的时间顺序排序;但是,您知道您的要求,我不知道。同样,使用 Paths.get()
构建路径。然后使用 Files.createDirectories()
确保您的嵌套文件夹已在文件系统中创建(如果它们已经存在,则该方法不执行任何操作,只是 returns 路径)。
使用 Path.resolve()
将您的文件名附加到文件夹路径。最后 Files.move()
会将您的文件移动到目标文件夹。