|
天堂之光 人间希望
你我共同品味
JAVA的浓香.
Linux的清芬. |
« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
链接 |
联系我
msn:zhanglincon@hotmail.com |
Blog信息 |
blog名称: 日志总数:99 评论数量:281 留言数量:4 访问次数:809485 建立时间:2005年11月17日 |

| |
[java文件操作专题]列出指定目录下的文件 原创空间, 软件技术
zhanglincon 发表于 2008/2/16 14:48:53 |
package book.io;
import java.io.File;import java.io.FilenameFilter;
/** * File类的list方法返回该目录下的所有文件(包括目录)的文件名,文件名不含路径信息 * File类的listFiles方法返回目录下的所有文件(包括目录)的File对象 * FilenameFilter是文件名过滤器接口类,所有自定义的文件名过滤器必须实现该接口的accept方法 * @author Administrator * */public class ListFileUtil {
/** * 这是一个内部类,实现了FilenameFilter接口,用于过滤文件 */ static class MyFilenameFilter implements FilenameFilter{
private String suffix = "";//文件名后缀 public MyFilenameFilter(String suffix){ this.suffix = suffix; } public boolean accept(File dir, String name) { //如果文件名与指定的后缀相同便返回true if(new File(dir,name).isFile()){ return name.endsWith(suffix); } else{ //如果是文件夹 return true; } } } /** * 列出目录下所有的文件包括子目录的文件路径 * @param dirName 文件夹的文件路径 */ public static void listAllFiles(String dirName){ //如果dir不以文件分隔符结尾,自动添加文件分隔符 if(!dirName.endsWith(File.separator)){ dirName = dirName + File.separator; } File dirFile = new File(dirName); //如果dir对应的文件不存在,或者不是一个文件夹则退出 if(!dirFile.exists() || (!dirFile.isDirectory())){ System.out.println("List失败!找不到目录:"+dirName); return; } /* * list方法返回该目录下的所有文件(包括目录)的文件名,文件名不含路径信息 * String[] files = dirFile.list(); for(int i = 0; i < files.length; i++){ System.out.println(files[i]); } */ //列出文件夹下所有的文件,listFiles方法返回目录下的所有文件(包括目录)的File对象 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 文件名过滤器对象 * @param dirName 目录名 */ public static void listFilesByFilenameFilter(FilenameFilter filter,String dirName){ //如果dir不以文件分隔符结尾,自动添加文件分隔符 if(!dirName.endsWith(File.separator)){ dirName = dirName + File.separator; } File dirFile = new File(dirName); //如果dir对应的文件不存在,或者不是一个文件夹则退出 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 = "d:/soft"; System.out.println(dir + " 目录下的内容:"); ListFileUtil.listAllFiles(dir); System.out.println(dir + " 经过过滤后的内容:"); //新建一个文件名过滤器,参数为“.exe” FilenameFilter mf = new ListFileUtil.MyFilenameFilter(".exe"); ListFileUtil.listFilesByFilenameFilter(mf, dir); } } |
|
|