Posted on 2009-05-24 20:32
啥都寫點(diǎn) 閱讀(208)
評(píng)論(0) 編輯 收藏 所屬分類:
J2SE
關(guān)鍵技術(shù):
- File類的list方法返回該目錄下所有的文件(包括目錄)的文件名,文件名不包含路徑信息。
- File類的listFiles方法返回該目錄下所有文件(包括目錄)的File對(duì)象。
- FilenameFilter是文件名過濾器接口類,所有自定義的文件名過濾器必須實(shí)現(xiàn)該接口的accept方法。
package book.io;
import java.io.File;
import java.io.FilenameFilter;
public class ListFileUtil {
/**
* 這是一個(gè)內(nèi)部類,實(shí)現(xiàn)了FilenameFilter接口,用于過濾文件
*/
static class MyFilenameFilter implements FilenameFilter{
//文件名后綴
private String suffix = "";
public MyFilenameFilter(String surfix){
this.suffix = surfix;
}
public boolean accept(File dir, String name) {
//如果文件名以surfix指定的后綴相同,便返回true,否則返回false
if (new File(dir, name).isFile()){
return name.endsWith(suffix);
}else{
//如果是文件夾,則直接返回true
return true;
}
}
}
/**
* 列出目錄下所有文件包括子目錄的文件路徑
* @param dirName 文件夾的文件路徑
*/
public static void listAllFiles(String dirName){
//如果dir不以文件分隔符結(jié)尾,自動(dòng)添加文件分隔符。
if (!dirName.endsWith(File.separator)){
dirName = dirName + File.separator;
}
File dirFile = new File(dirName);
//如果dir對(duì)應(yīng)的文件不存在,或者不是一個(gè)文件夾,則退出
if (!dirFile.exists() || (!dirFile.isDirectory())){
System.out.println("List失??!找不到目錄:" + dirName);
return;
}
//列出源文件夾下所有文件(包括子目錄)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++){
if (files[i].isFile()){
System.out.println(files[i].getAbsolutePath() + " 是文件!");
}else if (files[i].isDirectory()){
System.out.println(files[i].getAbsolutePath() + " 是目錄!");
ListFileUtil.listAllFiles(files[i].getAbsolutePath());
}
}
}
/**
* 列出目錄中通過文件名過濾器過濾后的文件。
* @param filter 文件名過濾器對(duì)象
* @param dirName 目錄名
*/
public static void listFilesByFilenameFilter(FilenameFilter filter, String dirName){
//如果dir不以文件分隔符結(jié)尾,自動(dòng)添加文件分隔符。
if (!dirName.endsWith(File.separator)){
dirName = dirName + File.separator;
}
File dirFile = new File(dirName);
//如果dir對(duì)應(yīng)的文件不存在,或者不是一個(gè)文件夾,則退出
if (!dirFile.exists() || (!dirFile.isDirectory())){
System.out.println("List失??!找不到目錄:" + dirName);
return;
}
//列出源文件夾下所有文件(包括子目錄)
File[] files = dirFile.listFiles(filter);
for (int i = 0; i < files.length; i++){
if (files[i].isFile()){
System.out.println(files[i].getAbsolutePath() + " 是文件!");
}else if (files[i].isDirectory()){
System.out.println(files[i].getAbsolutePath() + " 是目錄!");
ListFileUtil.listFilesByFilenameFilter(filter, files[i].getAbsolutePath());
}
}
}
public static void main(String[] args) {
String dir = "C:/temp";
// System.out.println((dir + "目錄下的內(nèi)容: "));
// ListFileUtil.listAllFiles(dir);
//
// System.out.println();
// System.out.println("經(jīng)過過濾器過濾后的內(nèi)容:");
// //新建一個(gè)文件名過濾器。參數(shù)為".txt"
// FilenameFilter myFilenameFilter = new ListFileUtil.MyFilenameFilter(".txt");
// ListFileUtil.listFilesByFilenameFilter(myFilenameFilter, dir);
String[] t = new File(dir).list();
for (int i=0; i<t.length; i++){
System.out.println(t[i]);
}
}
}
--
學(xué)海無涯