写一个程序来显示在程序的命令行中指定的目录中所有的文件和目录,包括文件大小以及是文件还是目录类型。按字母排序显示,并且目录在文件之前显示。
完成这个例子,File类是一个很关键的类。它的isDirectory()方法能确定所给的路径是文件还是目录;listFiles()方法将返回一个目录中所有的文件和目录;length()方法将返回文件大小。有了这些方法,就很容易对文件进行操作。
程序中使用System.getProperty(“user.dir”)来确保:如果用户没有提供目录,则使用当前的目录。使用Java的系统类拥有的排序机制来增加这个功能可以在用showDirInfo()方法显示信息之前,要使用一个比较的方法来对两个文件对象进行比较。Arrays类的sort()方法可完成这个任务。
import java.io.*;
public class Dir{
private static void showDirInfo(File list[]){
for (int i = 0; i < list.length; i++){
if (list[i].isDirectory())
System.out.print("DIRECTORY");
else
System.out.print(list[i].length() + " bytes");
System.out.println("\t" + list[i]);
}
}
public static void main(String args[]){
File path = new File(System.getProperty("user.dir"));
if (args.length > 0)
path = new File(args[0]);
if (path.exists() && path.isDirectory())
showDirInfo(path.listFiles());
else
System.out.println("Path not found or not directory");
}
}
private static void all(File list[])
{
for (int i = 0; i < list.length; i++){
if (list[i].isDirectory())
all(list[i].listFiles())
else
System.out.print(list[i].length() + " bytes");
System.out.println("\t" + list[i]);
}