java 返回用户在指定文件夹中的指定后缀的所有文件

我这样写的,但是只能找到指定文件夹下的txt文件,不能找到指定文件夹下的文件夹里的txt文件staticclassMyFilterimplementsFilenameFi... 我这样写的,但是只能找到指定文件夹下的txt文件,不能找到指定文件夹下的文件夹里的txt文件

static class MyFilter implements FilenameFilter {
private String type; // 后缀名

public MyFilter(String type) {
this.type = type;
}

public boolean accept(File dir, String name) {
return name.endsWith(type);
}
}

static void filterfile(String dir, String suffix,ArrayList<String>fileList)
// 返回用户在指定文件夹中的指定后缀的所有文件,dir是文件夹,suffix是后缀名
{
File f = new File(dir);
MyFilter filter = new MyFilter(suffix);
File[] files = f.listFiles(filter);
for (File a : files) {
//System.out.println(a.getName());
if(a.isDirectory()){
filterfile(dir,suffix,fileList);
}
else{
if(filter.accept(f, a.getName())){
fileList.add(a.getName());
}
}
}
}
展开
 我来答
百度网友96ffcf7
2015-11-05 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118720
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部

Java实现获取指定路径下的指定格式的文件代码如下:

package filenameFilter;
 
import java.io.File;
 
/*
 * 实现功能:
 *      获取指定路径下的指定格式的文件;
 * */
 
public class Test {
 
    public static void listPath(File file) {
        // 接收筛选过后的文件对象数组
        //用文件对象调用listFiles(FilenameFilter filter);方法,
        //返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
        File files[] = file.listFiles(new MyFilenameFilter());
 
        /*//遍历出指定文件路径下符合条件的文件
        for (File f : files) {
            System.out.println(f);
        }*/
         
        //遍历出指定文件路径下的所有符合筛选条件的文件
        for(File f: files){
            if(f.isDirectory()){
                listPath(f);
            }else{
                System.out.println(f);
            }
        }
         
         
         
    }
 
    public static void main(String[] args) {
        // 创建指定目录的文件对象
        File file = new File("F:\\test");
        // 调用文件晒筛选的方法,并将文件对象出入,
        listPath(file);
    }
}
    
package filenameFilter;
 
import java.io.File;
 
import java.io.FilenameFilter;
 
 
//实现FilenameFilter接口,可用于过滤器文件名
//本方法实现的是筛选指定格式结尾的文件
public class MyFilenameFilter implements FilenameFilter {
 
    /**
     * @param args
     *
     *            实现功能; 实现FilenameFilter接口,定义出指定的文件筛选器
     *
     */
 
     
    @Override
    //重写accept方法,测试指定文件是否应该包含在某一文件列表中
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        // 创建返回值
        boolean flag = true;
        // 定义筛选条件
        //endWith(String str);判断是否是以指定格式结尾的
        if (name.toLowerCase().endsWith(".jpg")) {
 
        } else if (name.toLowerCase().endsWith(".txt")) {
 
        } else if (name.toLowerCase().endsWith(".gif")) {
 
        } else {
            flag = false;
        }
        // 返回定义的返回值
         
        //当返回true时,表示传入的文件满足条件
        return flag;
    }
 
}
匿名用户
2015-06-20
展开全部

  File[] files = f.listFiles(filter);已经就已经过滤了文件,所以不可能得到目录,所以需要先调用File [] myList = f.listFiles();得到目录在用File[] files = f.listFiles(filter);试一试下面的代码吧。

public class MyFilter implements FilenameFilter
{
    private String type; // 后缀名
    public MyFilter(String type)
    {
        this.type = type;
    }
    public boolean accept(File dir, String name)
    {
        return name.endsWith(type);
    }
    static void filterfile(String dir, String suffix, ArrayList<String> fileList)
    {
        File f = new File(dir);
        File [] myList = f.listFiles();
        MyFilter filter = new MyFilter(suffix);
        String [] files = f.list(filter);
        fileList.addAll(Arrays.asList(files));
        for (File a : myList)
        {
            if (a.isDirectory())
            {
                    filterfile(a.toString(), suffix, fileList);
            } 
        }
    }
    public static void main(String[] args)
    {
        ArrayList<String> fileList = new ArrayList<String>();
        MyFilter.filterfile("F:\\xiaoshuo", "txt", fileList);
        for(String s:fileList)
        {
            System.out.println(s);
        }
    }
}

  文件需要改一下。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
山水阿锐
2015-06-20 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
package my.utils.algorithm.files;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;

public class FileVisitorUtil {
public static void main(String[] args) throws IOException {

Path startingDir = Paths.get("D:\\workspace\\AlgorithmUtils\\src");

FindFileVisitor findJavaVisitor = new FindFileVisitor(".java");

Files.walkFileTree(startingDir, findJavaVisitor);

for (String name : findJavaVisitor.getFilenameList()) {
System.out.println(name);
}
}
}

class FindFileVisitor extends SimpleFileVisitor<Path> {

private List<String> filenameList = new ArrayList<String>();

private String fileSuffix = null;

public FindFileVisitor(String fileSuffix) {
this.fileSuffix = fileSuffix;
}

@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {

if (file.toString().endsWith(fileSuffix)) {
filenameList.add(file.toString());
}
return FileVisitResult.CONTINUE;
}

public List<String> getFilenameList() {
return filenameList;
}

public void setFilenameList(List<String> filenameList) {
this.filenameList = filenameList;
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式