您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

《TIJ》第11章练习7

复习list的排序,函数重载以及藜取文件大小的方法。

7、撰写一个SortedDirList class,令其构造函数可以接收文件路径,并能够产生该路径下的所有文件的名称排序列表。撰写两个重载的list(),根据引数,产生整份列表或只产生列表的部分内容。再增加一个size(),令它接受一个文件名,并返回文件大小。

注:产生的list似乎即使不使用Arrays.sort()进行排序,也会自动按文件名称进行排序。

import java.io.*;
import java.util.*;

public class SortedDirList {
 String dir;
 File path;
 public SortedDirList(String dir){
  this.dir = dir;
  path = new File(dir);
 }
 void list(){
  String[] list = path.list();
  Arrays.sort(list, new AlphabeticComparator());
  for(int i = 0; i < list.length; i++)
   System.out.println(list[i]);
 }
 void list(String ext){
  String[] list = path.list(new DirFilter(ext));
  Arrays.sort(list, new AlphabeticComparator());
  for(int i = 0; i < list.length; i++)
   System.out.println(list[i]);
 }
 long size(String fileName){
  File file = new File(dir + "/" + fileName);
  return file.length();
 }
 /**
  * Method main
  *
  *
  * @param args
  *
  */
 public static void main(String[] args) {
  // TODO: Add your code here
  
  if(args.length == 0)
  {
   SortedDirList sdl = new SortedDirList(".");
   sdl.list();
   System.out.println("\n");
   sdl.list("txt");
   System.out.println("\n");
   System.out.println( sdl.size("SortedDirList.java") );
  }
  else if(args.length == 3)
  {
   SortedDirList sdl = new SortedDirList(args[0]);
   sdl.list();
   System.out.println("\n");
   sdl.list(args[1]);
   System.out.println("\n");
   System.out.println( args[2] + "'s size: " +
   sdl.size(args[2]) + "byte" );
  }
  else
  {
   System.out.println("参数不正确。");
  }
 } 
}

class DirFilter implements FilenameFilter {
 String afn;
 DirFilter(String afn) {
  this.afn = afn;
 }
 public boolean accept(File dir, String name) {
  String f = new File(name).getName();
  return f.indexOf(afn) != -1;
 }
}

class AlphabeticComparator implements Comparator {
 public int compare(Object o1, Object o2) {
  String s1 = (String)o1;
  String s2 = (String)o2;
  return s1.toLowerCase().compareTo(s2.toLowerCase());
 }
}

作者 不见不散 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

内容/Content