java - 按文件名中第二秒后的时间戳字符串对目录中的文件进行排序 -

标签 java file sorting arraylist directory

我正在尝试按 unix 时间戳对目录中的文件进行排序。以下是目录中的文件名。

20151102-2148040042-1446522484838-Game21500052-x.realtime
20121102-2148010042-1446522484138-Game21500052-x.realtime

我需要在第二个 - 后对 unix 时间戳进行排序后获取文件。我怎样才能在java中做到这一点?

我可以像下面这样在 python 中做到这一点

def extract_timestamp(filename):
    timestamp = filename.split('-')[2]
     return timestamp
directory = '/home/ubuntu/assdd/'
# Get all files from the path
log_files = os.listdir(directory)

# Sort files by timestamp
log_files.sort(key=extract_timestamp)

# Get full path of each file
files = [os.path.join(directory,data_file) for data_file in log_files]

最佳答案

一种非常直接的方法:

List<String> fileNames = ... ;

List<String> sortedFileNames = fileNames.stream()
    .sorted(Comparator.comparingLong(s -> Long.parseLong(s.split("-")[2])))
    .collect(Collectors.toList());

sorted调用需要一些解释:

它创建了一个Comparator比较 Long值( Comparator<Long> )。它得到Long通过将 fileName 字符串拆分为由 - 分隔的部分来获取值。然后,它获取结果分割的第三个元素,其中包含一个数字。然后它将这个数字转换为长整型。

关于java - 按文件名中第二秒后的时间戳字符串对目录中的文件进行排序 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42850826/

相关文章:

Java - 基于 MPG 对 ArrayList<Car> 中的对象进行排序

java - 文本文件字典Java

java - JSONObject 在使用字符串实例化后返回非空值 "null"

java - 如何使用线程在不同系统中运行同一个java项目

c - fatal error : No such file or directory for header file

java - 如何在 Hibernate XML 配置文件中使用属性表示法

sorting - Cakephp 3.3 按多列排序分页结果

java - 如何使用java小程序来屏蔽divx源(带有示例)?

c++ - 如何使用 C 修改文本数据文件中的值

java - 测试随机数生成器