【问题标题】:writing and reading file with date in the name写入和读取名称中带有日期的文件
【发布时间】:2014-06-13 08:56:19
【问题描述】:

我正在尝试在 java 中编写一个文件,并在文件名中附加当前日期和时间,然后我想在写入后读取同一个文件,但日期和时间已更改,无法找到该文件.

这是我尝试过的

DateFormat df = new SimpleDateFormat( "yyyy-MM-dd_HH.mm.ss" );

写入文件:

File messagesFile = new File(dirName + "\\2g3gPS_Messages_Statistics_" +
  df.format(new Date() ) + ".csv");
if (!messagesFile.exists()) {
  messagesFile.createNewFile();
}

读取文件:

records = reader.readData(dirName2G3GPS + "\\\\2g3gPS_Messages_Statistics_" +
  df.format(new Date() ) + ".csv");

假设我在 10:54:10 写入文件并尝试在 10:54:50 读取它,那么它将找不到该文件。

如何读取目录中写入的最新文件。周围还有其他工作吗?

【问题讨论】:

  • 使用Date的同一个实例,不要创建一个新实例。
  • 将日期存储在一个变量中,这样您就可以通过重新读取和写入来使用这些日期,或者生成一次文件名。

标签: java file file-io io filereader


【解决方案1】:

您正在调用new Date(),它将给出调用它的时间 - 写作和阅读不同。

改为调用Date date = new Date() 并在两个地方都使用这个date

【讨论】:

    【解决方案2】:

    首先,您应该跟踪您用于写入文件的new Date() 值,以便稍后再次读取该文件。

    如果您总是想从给定目录中读取最新的文件,您可以对文件名进行排序并读取最后一个。 这样的事情可能会有所帮助:

    File dir = new File(dirName);
    String[] filenames = dir.list();
    Arrays.sort(filenames);
    File latestFile = new File(dir.getParentFile(), filenames[filenames.length - 1]);
    

    当然,这个解决方案的工作前提是dirName 目录中的所有文件都具有相同的文件名格式。

    【讨论】:

      【解决方案3】:

      获取目录列表并使用日历或Joda-Time 比较解析文件名的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多