排序式列出指定目录下的指定文件/夹——《Thinking in Java》随笔027

 1 //: SortedDirList.java
 2 /// 此程序可以对一个目录进行列出。
 3
 4 package c10;
 5
 6 import java.io.File;
 7 import java.io.FilenameFilter;
 8 import java.util.Arrays;
 9 import java.util.Comparator;
10
11 /**
12 *    @time:         上午11:52:04
13 *    @date:         2017年4月29日
14 *    @auther:    skyfffire
15 *    @version:    v0.1
16 *
17 *    可排序式读入文件目录,传值sort=-1为降序
18 *    传值sort=1为传统升序(按照ASCII码)
19 */
20 public class SortedDirList {
21     private File path = null;
22     private String[] list = null;
23     private int sort = 1;
24
25     /**
26      *
27      * @param filesPath        要读取的路径
28      * @param afn            过滤字符,如果为null则不过滤
29      * @param sort            排序方式,-1降序,1升序
30      */
31     public SortedDirList(final String filesPath,
32             final String afn, int sort) {
33         this.sort = sort;
34         path = new File(filesPath);
35
36         if (afn == null) {
37             list = path.list();
38         } else {
39             list = path.list(new FilenameFilter() {
40                 @Override
41                 public boolean accept(File dir, String name) {
42                     String n = new File(name).getName();
43
44                     return n.indexOf(afn) != -1;
45                 }
46             });
47         }
48
49         /**
50          * 手动实现sort方法的内部排序机制,这样可以动态地进行升/降排序
51          */
52         Arrays.sort(list, new Comparator<String>() {
53             @Override
54             public int compare(String o1, String o2) {
55                 return sort * (o1.compareTo(o2));
56             }
57         });
58     }
59
60     /**
61      * 用于打印list
62      */
63     void print() {
64         for (String nowPath : list) {
65             System.out.println(nowPath);
66         }
67     }
68
69     /**
70      * @return the sort
71      */
72     public int getSort() {
73         return sort;
74     }
75
76     /**
77      * @param sort the sort to set
78      */
79     public void setSort(int sort) {
80         this.sort = sort;
81     }
82
83     public static void main(String[] args) {
84         // 不进行过滤
85         SortedDirList sdl = new SortedDirList("C:\\", null, 1);
86
87         sdl.print();
88     }
89 }
90
91 ///:~

我以自己的C盘根目录为例,升序排序的结果为:

$Recycle.Bin
BOOTNXT
Documents and Settings
OneDriveTemp
PerfLogs
Program Files
Program Files (x86)
ProgramData
QMDownload
Recovery
SymCache
System Volume Information
Users
Windows
bootmgr
pagefile.sys
swapfile.sys

降序排序的结果为:

swapfile.sys
pagefile.sys
bootmgr
Windows
Users
System Volume Information
SymCache
Recovery
QMDownload
ProgramData
Program Files (x86)
Program Files
PerfLogs
OneDriveTemp
Documents and Settings
BOOTNXT
$Recycle.Bin

可以只改动一个正负号就能快速地修改排序方式。

时间: 2024-10-13 19:31:39

排序式列出指定目录下的指定文件/夹——《Thinking in Java》随笔027的相关文章

递归列出一个目录下所有的文件夹和文件

package chapter10; import java.io.File; /** * 列出一个目录下所有的文件夹和文件 * */public class TestFile02 { public static void main(String[] args) { File file = new File("E:\\av"); listFile(file); } public static void listFile(File file) { File[] files = file.

删除指定目录下的空文件夹

//删除制定目录下的所有空文件夹 //num=0 第一次遍历该文件夹 num=1 第二次遍历该文件夹 public static void ListDirectory(File file,int num)throws Exception { if(!file.exists()) { throw new IllegalArgumentException("目录"+file+"不存在"); } else if(!file.isDirectory()) { throw n

javaFile循环列出指定目录下的所有文件(源代码)

package javatest.basic22; import java.io.File; import java.io.IOException; public class FileTest { public void getFileName(File file){ //判断是否是文件 if(file.isFile()){ System.out.println(file.getPath()+file.getName()); }else{ //如果是目录,列出当前目录下所有目录 File[] f

python之查询指定目录下的最新文件

使用os模块查询指定目录下的最新文件 1 import os 2 3 # 输入目录路径,输出最新文件完整路径 4 def find_new_file(dir): 5 '''查找目录下最新的文件''' 6 file_lists = os.listdir(dir) 7 file_lists.sort(key=lambda fn: os.path.getmtime(dir + "\\" + fn) 8 if not os.path.isdir(dir + "\\" + f

复制指定目录下的指定文件,并修改后缀名 很重要,也很难!!!

package cn.idcast2; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; im

c# 获取指定目录下的所有文件并显示在网页上

参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).aspx 网页表格的生成  http://www.w3school.com.cn/html/html_tables.asp C# 通过文件扩展名获取图标和描述 http://www.csframework.com/archive/2/arc-2-20110514-1478.htm   http://ww

Windows Phone获得IsolatedStorage中指定目录下的所有文件

在Windows Phone 中对隔离存储空间中的文件操作需要通过System.Io.IsolatedStorage下的类进行操作 获得指定文件夹下的所有文件: 参数:是指定文件夹的路径加上通配符,格式:\folder1\* List<string> GetFileNames(string _strFolder) { List<string> returnlst = new List<string>(); using (IsolatedStorageFile stora

使用for循环创建在指定目录下批量创建文件并重命名所有文件

要求1: 使用for循环在/root/scripts/practice/q1/oldboy 目录下创建十个文件.名称依次为: oldboy-1, oldboy-2, ..... oldboy-10. 脚本实现: #!/bin/bash #Question1 shopt -s expand_aliases alias ll="ls -l" cd /root/scripts/practice/q1 #首先判断目录是否存在,不存在则创建目录 if [ ! -e oldboy ] then  

php删除指定目录下的相关文件实例

在php中删除文件最简单的办法直接使用unlink命令,但本文章介绍的是需要删除指定目录下的指定文件,所以我需要遍历删除了,具体看这个例子.  代码如下 复制代码 <?php //删除指定文件夹下的非法文件 function my_del($dir)  {     if(is_dir($dir)){         //打开指定文件夹         if($handle = opendir($dir))         {             while(false !== ($file

linux复制指定目录下的全部文件到另一个目录中

linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir2.怎样才能将dir1下所有文件复制到dir2下了如果dir2目录不存在,则可以直接使用cp -r dir1 dir2即可.如果dir2目录已存在,则需要使用cp -r dir1/. dir2如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求.ps:di