我对一个目录的读取文件有一个问题。首先,
String[] files = sourceDirectory.list();
我收集一些数据跟踪并将它们放在一个目录中。我希望按创建时间的顺序读取文件,因为我想保留数据跟踪的顺序。
在File.list()
文档中,它无法保证一致性顺序。如何阅读订单中的文件?
第二个问题是:我想计算消息名称中2条消息之间的间隔时间,因为消息名称有时间戳信息。例如,
trace2011_Aug_3__0_0_1
和trace2011_Aug_3__0_0_5
。如何将字符串值转换为Date对象并计算它们之间的差异?
非常感谢。
答案 0 :(得分:4)
使用File
获取listFiles()
,然后使用File.lastModified()
按上次修改时间对其进行排序。
File[] files = sourceDirectory.listFiles();
Arrays.sort( files, new Comparator<File>() {
public int compare( File a, File b ) {
return a.lastModified() - b.lastModified();
}
});
要转换包含日期的文件名,请使用String.substring()
提取日期部分,然后将生成的子字符串转换为日期。在那之后,获得差异应该很容易。
答案 1 :(得分:2)
问题的前半部分:
File[] files = sourceDir.listFiles();
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
}
});
// Now files should be sorted by timestamp.
答案 2 :(得分:0)
关于您的第一个问题:只需使用File.listFiles()
并使用File
对结果数组的Arrays.sort
实例进行排序,并使用自定义比较器比较文件的lastModified
值。然后遍历排序的数组。
关于第二个问题:使用String.substring
从消息中提取日期部分,并使用具有适当模式的SimpleDateFormat
将每个字符串更改为Date
对象。间隔只是两个日期的时间(以Date.getTime()
获得)之间的差异。
答案 3 :(得分:0)
我知道这样做的唯一方法是弹出并读取输出。此链接有一个非常难看的方法,用于从文件中获取创建日期:
http://www.daniweb.com/software-development/java/threads/51670
就日期解析而言,您可以创建自定义日期格式化程序并使用它来解析日期值:
http://exampledepot.com/egs/java.text/ParseDate.html
一旦解析了日期,请使用此方法来获得差异:
How can I calculate a time span in Java and format the output?
祝你好运!答案 4 :(得分:0)
第一个问题:请参阅tskuzzy的回答。
第二个问题:编写解析器类/方法并使用substring方法将字符串转换为日期。 (实际上只有你知道,字符串是如何构建的)。也许Apache´s String Utils会帮助你。