【问题标题】:How to move files to year/month/day folders based on timestamp in java [closed]如何根据java中的时间戳将文件移动到年/月/日文件夹[关闭]
【发布时间】:2018-04-15 12:16:43
【问题描述】:

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

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

所以所有天文件夹都应该在一个月文件夹中,而月份文件夹应该在年份文件夹中。这是我需要的文件夹结构。

【问题讨论】:

  • 这看起来相当简单。你在哪个部分苦苦挣扎?
  • 好吧,解析文件名,如果目录不存在则创建目录,然后移动文件。所有这些都是非常简单的任务。但是你需要做一些研究,阅读 Java IO 教程,javadoc。这是开发人员工作的一部分。
  • 这是发生在一个时区还是仅与 UTC 有一个偏移?不知道这些时间戳的区域偏移量,我有点不舒服。或者他们都是UTC?并且可以按UTC的日期存储文件吗?
  • 这个问题对于 Stack Overflow 来说太宽泛了。这里的问题必须集中在一个特定的编程问题上,而不是要求一个关于一系列常见编程杂务的教程。 我投票结束。

标签: java date timestamp filesystems


【解决方案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();

【讨论】:

    【解决方案2】:

    我假设您的文件中有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 从您的日期时间获取年、月和日。或者使用格式化程序将这些作为字符串而不是ints。我希望所有月份和日期文件夹都使用两位数的名称(09 代表 9 月,02 代表本月 2 日)。在某些情况下,这将帮助您获得正确的时间排序;但是,你知道你的要求,我不知道。同样,使用Paths.get() 构建路径。然后使用Files.createDirectories() 确保您的嵌套文件夹已在文件系统中创建(如果它们已经存在,该方法什么也不做,只返回路径)。

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

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多