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<File>() {@Overridepublic 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<File>() {public int compare(File f1, File f2) {long diff = f1.lastModified() - f2.lastModified();if (diff > 0)return 1;else if (diff == 0)return 0;elsereturn -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<File> fileList = Arrays.asList(files);Collections.sort(fileList, new Comparator<File>() {public int compare(File f1, File f2) {long diff = f1.length() - f2.length();if (diff > 0)return 1;else if (diff == 0)return 0;elsereturn -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

java file.listFiles()按文件名称、日期、大小排序相关推荐

  1. Java File.listFiles方法具有什么功能呢?

    转自: Java File.listFiles方法具有什么功能呢? 下文笔者讲述java中File.listFiles方法的功能简介说明,如下所示: File.listFiles方法的功能:获取指定目 ...

  2. java File 读取本地文件 增删改查

    java 读取本地文件 增删改查 这里删除不做删除,只是对文件进行重命名,只是物理意义不可见,实际存在 用的jfinal框架 /*** 列出指定路径的文件* @param path 路径* @retu ...

  3. Java File.createNewFile 创建文件的四种方式小笔记

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java File.createNewFile 创建文件的四种方式小笔记 - joshua317的博客 1.File(Str ...

  4. Java File createNewFile创建文件包含多层级目录报错

    Java File createNewFile创建文件包含多层级目录报错 比如,需要创建一个包含目录层级结构的文件:c:\dira\dirb\dirc\file.txt 如果直接使用File的crea ...

  5. java修改file的名字_File类——JAVA实现批量修改文件名称

    最近做了一道题目如下 批量修改文件名称 假设你某天跟朋友出去玩,使用某数码相机拍摄了一些照片 但是当你回来的时候你发现所有的照片都是如下命名的 P1020335.JPG P1020336.JPG P1 ...

  6. Java File类(文件操作类)详解

    在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成.File 类定义了一些方法来操作文件,如新 ...

  7. java file list listfiles,Java File listFiles()用法及代码示例

    listFiles()方法是File类的一部分.如果路径名是目录,则该函数返回一个File数组,表示给定抽象路径名中的文件,否则返回null.该函数是重载函数.其中一个函数没有任何参数,第二个函数将F ...

  8. java语言实现修改文件名称的功能

    感觉最近有点自卑,不行以后写文章的时候要给自己打鸡血,现在就来一句:「生命之灯因热情而点燃,生命之舟因拼搏而前行」. 上课的时候,老师展示了他那用 matlab 语言解决了学生交实验的文件名命名不规范 ...

  9. JAVA file列出所有文件_用Java代码列出一个目录下所有的文件

    1.File类 File类在java.io.File包中,所以要导入这个包. File类中用到的方法: boolean isDirectory()       测试此抽象路径名表示的文件是否是个目录 ...

  10. 如何通过Java批量重命名文件名称

    日常生活中,我们需要大量重命名文件名称时,如果手动一个个修改,太过浪费时间,我们可以通过写一个Java类,简单执行来实现批量重命名文件名称,我们先指定需要需要重命名文件的路径,将所有文件读取出来,循环 ...

最新文章

  1. 计算几何题中的英语生词
  2. C#中更改DataTable某列的值,格式化显示指定列的数据
  3. AUTOSAR从入门到精通100讲(四十一)-动态架构设计中的时序图
  4. fastJson性能测试
  5. YOLOv4 | 用C++ 和OpenCV 实现视频目标检测
  6. 一种在智能对话中实现上下文功能的方法
  7. 英伟达发布迁移学习工具包,现在可以申请早期试用
  8. haar的简单应用(1)
  9. UVA 1449 - Dominating Patterns AC自动机
  10. java html转word的坑 poi样式丢失还乱码
  11. html5gps定位经纬度,html5 定位 获得当前位置的经纬度
  12. 通过 purge_relay_logs 自动清理relaylog
  13. quoted-printable解码程序
  14. iterm2分屏切换
  15. 网易云音乐接入微信状态
  16. 使用Spreadsheet操作Excel
  17. 使用calibre导出pdf格式时调整行间距
  18. 西安交通大学915考研编程笔记
  19. 工业机器人市场需求 将推动建材市场发展
  20. 嵌入式软件调试之软件断点

热门文章

  1. c/c++编译的程序占用的内存分配
  2. 使用wsimport构建WebService客户端
  3. 阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期
  4. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_3 Mybatis中编写dao实现类的使用-修改删除等其他操作...
  5. VC CUtilityLZW 效率还行的LZW压缩算法,随机数加密
  6. sqldeveloper不能启动,显示Unable to create an instance of the Java Virtual Machine...的解决办法...
  7. 自动化测试-selenium初始化Driver参考
  8. ESS And 迅雷5 让我不能上网
  9. 发点牢骚,关于微软,关于WPF/E
  10. *SQL Server系统表的应用