[java]代码库
package C7.src.book.io;
import java.io.File;
import java.io.FilenameFilter;
public class ListFileUtil {
/**
* 这是一个内部类,实现了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不以文件分隔符结尾,自动添加文件分隔符。
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();
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 = "C:/temp";
// System.out.println((dir + "目录下的内容: "));
// ListFileUtil.listAllFiles(dir);
//
// System.out.println();
// System.out.println("经过过滤器过滤后的内容:");
// //新建一个文件名过滤器。参数为".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]);
}
}
}