黑马程序员技术交流社区
标题:
帮帮忙,File文件目录过滤,很急
[打印本页]
作者:
zhanghua
时间:
2011-11-16 18:28
标题:
帮帮忙,File文件目录过滤,很急
本帖最后由 zhanghua 于 2011-11-21 13:56 编辑
在写程序时遇到一个问题,怎么让file类列出来指定格式的文件,而不是所有的文件类型??
作者:
SilenceSea
时间:
2011-11-16 18:49
import java.io.*;
import java.util.*;
public class DirList3 {
public static void main(String[] args) {
File path = new File(".");
//存放文件名数组的list
ArrayList<String> fStr = new ArrayList<String>();
//存放目录的List
ArrayList<File> fls = new ArrayList<File>();
//文件过滤器,主要是列出指定目录下的所有文件包括其子目录下的所有文件,并列出符合表达式的文件名
FileFilter ff = new FileFilter(args[0]);
//列出所有目录,并将其添加到fls中
ff.listAllDir(path, fls);
File f = null;
String[] list = null;
for(Iterator<File> iter = fls.iterator(); iter.hasNext(); ) {
f = iter.next();
list = f.list(ff);
if(list.length != 0)
fStr.addAll(Arrays.asList(list));
}
//列出所有符合的文件名
System.out.println(Arrays.toString(fStr.toArray(new String[fStr.size()]))); }
}
FileFilter类
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class FileFilter implements FilenameFilter {
private Pattern pattern;
public FileFilter(String regex) {
pattern = Pattern.compile(regex);
}
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(name).matches();
}
public void listAllDir(File dir, ArrayList<File> fls) {
File[] fs = dir.listFiles();
for(File item:fs) {
if(item.isDirectory()) {
fls.add(item);
listAllDir(item, fls);
}
}
fls.add(dir);
}
}
作者:
咪咪
时间:
2011-11-16 19:40
老师讲的时候好像用到内部类了。并通过文件endwith 方法判断文件后缀名过滤的。
作者:
骚灵小情歌
时间:
2011-11-16 19:56
本帖最后由 骚灵小情歌 于 2011-11-16 19:57 编辑
首先遍历
for(File file : files)
{
if(file.isDirectory())//如果是文件夹,继续方法进去遍历
----
else//如果不是,拟定取出哪一类
{
if(file.getName().endsWith("这里写想要的文件的后缀或者文件名"));
list.add(file); 放到一个地方先存着
}
}
作者:
王新春
时间:
2011-11-17 13:02
file.getName().endsWith("这里写想要的文件的后缀或者文件名"));把你指定的文件类型写进去,就可以了。这样
file类列出来的就是指定格式的文件,而不是所有的文件类型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2