Posted on 2006-03-01 17:02
月亮的太陽 閱讀(856)
評論(0) 編輯 收藏 所屬分類:
編程
得到文件夾的文件列表;
先定義一個類
CODE:
class SortFile {
long size;
long date;
String name;
public SortFile(String name, long date, long size) {
this.name = name;
this.date = date;
this.size = size;
}
public static SortFile[] sort(SortFile[] src, String mark, boolean rule) {
if (rule) {//升序
for (int i = src.length; i > 1; i--) {
for (int j = 0; j < i - 1; j++) {
boolean change = false;
if (mark.equals("name")) {
if (src[j].name.compareTo(src[j + 1].name) > 0)
change = true;
} else if (mark.equals("date")) {
if (src[j].date > src[j + 1].date)
change = true;
} else {
if (src[j].size > src[j + 1].size)
change = true;
}
if (change) {
SortFile temp = src[j];
src[j] = src[j + 1];
src[j + 1] = temp;
}
}
}
} else {
//降序只要把>改成<
}
return src;
}
}
這樣得到一個目錄下文件后:
CODE:
ArrayList al = new ArrayList();
File f = new File(dir);
String[] names = f.list();
for (int i = 0; i < names.length; i++) {
File fs = new File(f, names[i]);
SortFile sf = new SortFile(name[i], fs.length(), fs.lastModified);
al.add(sf);
}
最后把al轉換成數組:
SortFile[] sfSrc = new SortFile[al.size()];
for(i=0;i<al.size();i++)
sfSrc[i] = (SortFile) al.get(i);
這樣你要按什么排傳進去名稱,升降傳boolean
比如\
SortFile[] forName = SortFile.sort(sfSrc,"name",true);
把得到的ArrayList傳入返回排序后的al呢,因為這時多次遍歷,只有數組最快.把al轉化成數組只是多用了1個時間單位的開銷的話,下面用數組來排充就節少了10000個時間單位.