import java.io.File;
import java.util.Scanner;
/**
* 根据键盘录入的命令所指定的排序方法对文件进行排序
*/
public class Test {
public static void main(String[] args){
//创建File对象 指定文件夹"aaa"的文件路径
File ff=new File("/home/author/aaa");
//返回一个抽象路径名数组,文件夹“aaa”目录下的所有文件和目录的路径存入数组
File[] ll=ff.listFiles();
//创建Sort对象
Sort so=new Sort();
//创建Scanner对象 键盘录入
Scanner sc=new Scanner(System.in);
System.out.println("请输入命令:1---按文件名排序 2---按文件大小 3---按最后修改时间");
int x=sc.nextInt();
//switch 选择排序方法
switch(x){
case 1:so.paiXu1(ll);break;
case 2:so.paiXu2(ll);break;
case 3:so.paiXu3(ll);break;
default:System.out.println("请输入正确的命令!");
}
}
}
package Rank;
import java.io.File;
/**
* 提供几种文件排序的方法
* 一、文件名按自然顺序排序
* 二、按文件大小排序
* 三、文件最后一次修改时间排序
*
*/
public class Sort {
//第一种排序方法 比较文件名 自然排序 按照文件名字符的ASCII码表值进行排序
public void paiXu1(File[] ll){
//for循环遍历数组ll中所有元素进行排序
for(int i=0;i<ll.length;i++){
for(int j=i+1;j<ll.length;j++){
//利用comparTo()方法进行比较 返回值int型 有正数 负数 正数表示前者的ASCII值较大 0表示相等,负数表示前者的ASCII值小
if(ll[i].compareTo(ll[j])>0){
//交换赋值
File fe;
fe=ll[i];
ll[i]=ll[j];
ll[j]=fe;
}
}
System.out.println(ll[i]);
}
}
//第二中排序方法 按照文件大小排序
public void paiXu2(File[] ll){
//for循环遍历数组ll中所有元素进行排序
for(int i=0;i<ll.length;i++){
for(int j=i+1;j<ll.length;j++){
//length()方法 返回文件的长度 也就是文件的大小 返回值是long型
if(ll[i].length()<ll[j].length()){
//交换赋值
File fe;
fe=ll[i];
ll[i]=ll[j];
ll[j]=fe;
}
}
System.out.println(ll[i]);
}
}
//第三种排序方法 按最后一次修改的时间
public void paiXu3(File[] ll){
//for循环遍历数组ll中所有元素进行排序
for(int i=0;i<ll.length;i++){
for(int j=i+1;j<ll.length;j++){
//lastModified()方法返回文件最后一次被修改的时间 毫秒 返回值是long型
if(ll[i].lastModified()<ll[j].lastModified()){
//交换赋值
File fe;
fe=ll[i];
ll[i]=ll[j];
ll[j]=fe;
}
}
System.out.println(ll[i]);
}
}
}