为了账号安全,请及时绑定邮箱和手机立即绑定

Java:在指定文件夹中查找.txt文件

Java:在指定文件夹中查找.txt文件

暮色呼如 2019-11-29 15:02:38
是否有内置的Java代码可以解析给定的文件夹并在其中搜索.txt文件?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您可以使用该类listFiles()提供的方法java.io.File。


import java.io.File;

import java.io.FilenameFilter;


public class Filter {


    public File[] finder( String dirName){

        File dir = new File(dirName);


        return dir.listFiles(new FilenameFilter() { 

                 public boolean accept(File dir, String filename)

                      { return filename.endsWith(".txt"); }

        } );


    }


}


查看完整回答
反对 回复 2019-11-29
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

尝试:


List<String> textFiles(String directory) {

  List<String> textFiles = new ArrayList<String>();

  File dir = new File(directory);

  for (File file : dir.listFiles()) {

    if (file.getName().endsWith((".txt"))) {

      textFiles.add(file.getName());

    }

  }

  return textFiles;

}

您想在这种情况下进行不区分大小写的搜索:


    if (file.getName().toLowerCase().endsWith((".txt"))) {

如果要在目录树中递归搜索文本文件,则应该能够将上述内容作为递归函数或使用堆栈的迭代函数进行调整。


查看完整回答
反对 回复 2019-11-29
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

我根据在Google上找到的帖子制定了解决方案。而且我认为发布它也是没有害处的,即使它是旧线程也是如此。


该代码的唯一优点是它还可以遍历子目录。


import java.io.File;

import java.io.FileFilter;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import org.apache.commons.io.filefilter.DirectoryFileFilter;

import org.apache.commons.io.filefilter.WildcardFileFilter;

方法如下:


List <File> exploreThis(String dirPath){


    File topDir = new File(dirPath);


    List<File> directories = new ArrayList<>();

    directories.add(topDir);


    List<File> textFiles = new ArrayList<>();


    List<String> filterWildcards = new ArrayList<>();

    filterWildcards.add("*.txt");

    filterWildcards.add("*.doc");


    FileFilter typeFilter = new WildcardFileFilter(filterWildcards);


    while (directories.isEmpty() == false)

    {

        List<File> subDirectories = new ArrayList();


        for(File f : directories)

        {

            subDirectories.addAll(Arrays.asList(f.listFiles((FileFilter)DirectoryFileFilter.INSTANCE)));

            textFiles.addAll(Arrays.asList(f.listFiles(typeFilter)));

        }


        directories.clear();

        directories.addAll(subDirectories);

    }


    return textFiles;

}


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信