博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java file.listFiles()按文件名称、日期、大小排序
阅读量:5174 次
发布时间:2019-06-13

本文共 2845 字,大约阅读时间需要 9 分钟。

1:按 文件名称 排序是什么规则呢?

windows的命名规则是,特殊字符(标点、符号)> 数字 > 字母顺序 > 汉字拼音。首字规则,首字相同看第二个,依次类推… 

例如:全是数字的情况,100<200<300 ;111<121<131; 111<112<113;

2:按 文件日期 排序是什么规则呢?

按 文件日期 排序分两种:

(1)按文件创建日期排序(比较特殊)

(2)按文件修改日期排序
文件创建日期排序:也就字面意思啦。 
文件修改日期排序:按照文件修改日期排序。

3:按 文件大小 排序是什么规则呢?

这个就比较简单了,按文件占用内存的大小排序。

规则,清楚了。那么,就进入正题。怎么让 file.listFiles() 返回的 File[ ] 是按照上面所说的规则排序呢?

1:按 文件名称 排序

public static void orderByName(String filePath) {        File file = new File(filePath);        File[] files = file.listFiles();        List fileList = Arrays.asList(files);        Collections.sort(fileList, new Comparator
() { @Override public int compare(File o1, File o2) { if (o1.isDirectory() && o2.isFile()) return -1; if (o1.isFile() && o2.isDirectory()) return 1; return o1.getName().compareTo(o2.getName()); } }); for (File file1 : files) { System.out.println(file1.getName()); } }

打印的顺序是:按照递增的顺序排列

2:按 文件日期 排序 

按 文件修改日期:递增

public static void orderByDate(String filePath) {        File file = new File(filePath);        File[] files = file.listFiles();        Arrays.sort(files, new Comparator
() { public int compare(File f1, File f2) { long diff = f1.lastModified() - f2.lastModified(); if (diff > 0) return 1; else if (diff == 0) return 0; else return -1;//如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减 } public boolean equals(Object obj) { return true; } }); for (int i = 0; i < files.length; i++) { System.out.println(files[i].getName()); System.out.println(new Date(files[i].lastModified())); } }

3:按 文件大小 排序

public static void orderByLength(String filePath) {        File file = new File(filePath);        File[] files = file.listFiles();        List
fileList = Arrays.asList(files); Collections.sort(fileList, new Comparator
() { public int compare(File f1, File f2) { long diff = f1.length() - f2.length(); if (diff > 0) return 1; else if (diff == 0) return 0; else return -1;//如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减 } public boolean equals(Object obj) { return true; } }); for (File file1 : files) { if (file1.isDirectory()) continue; System.out.println(file1.getName() + ":" + file1.length()); } }

这样,打印的顺序是:按照递增的顺序排列

 

喜欢本文的朋友们,欢迎关注微信公众号“Java面试达人”,收看更多精彩内容

 

转载于:https://www.cnblogs.com/javasuperman/p/10705142.html

你可能感兴趣的文章
二叉树(三)
查看>>
linux加密文件系统 fsck 无法修复一例
查看>>
【linux配置】VMware安装Redhat6.5
查看>>
AI自主决策——有限状态机
查看>>
《http权威指南》阅读笔记(二)
查看>>
软件工程
查看>>
http协议
查看>>
js替换问题replace和replaceAll
查看>>
c++11 : range-based for loop
查看>>
中国农历2013,2014 (zz.IS2120@BG57IV3)
查看>>
用virtualenv建立独立虚拟环境 批量导入模块信息
查看>>
Sublime Text3 插件:convertToUTF8
查看>>
BZOJ4060 : [Cerc2012]Word equations
查看>>
hdu2089不要62(数位dp)
查看>>
JAVA输出最大值和最小值
查看>>
64位weblogic11g安装
查看>>
oracle、mysql、sql server等;流行数据库的链接驱动配置
查看>>
UvaLive 6664 Clock Hands
查看>>
PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现
查看>>
Problem B: 取石子
查看>>