代码之家  ›  专栏  ›  技术社区  ›  Sri

Java:Dest.txt文件在指定文件夹中[关闭]

  •  49
  • Sri  · 技术社区  · 15 年前

    是否有一个内置的Java代码,用于解析给定文件夹并搜索它 .txt 文件夹?

    8 回复  |  直到 7 年前
        1
  •  120
  •   Rajdeep Paul    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"); }
            } );
    
        }
    
    }
    
        2
  •  22
  •   cletus    15 年前

    尝试:

    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"))) {
    

    如果您想通过目录树递归搜索文本文件,那么您应该能够使用堆栈将上面的内容调整为递归函数或迭代函数。

        3
  •  17
  •   j0k BlackMario    12 年前
    import org.apache.commons.io.filefilter.WildcardFileFilter;
    
    .........
    .........
    
    File dir = new File(fileDir);
    FileFilter fileFilter = new WildcardFileFilter("*.txt");
    File[] files = dir.listFiles(fileFilter);
    

    上面的代码对我很有用

        4
  •  6
  •   Bo Persson tox    13 年前

    它真的很有用,我用的时候稍微改变一下:

    filename=directory.list(new FilenameFilter() { 
        public boolean accept(File dir, String filename) { 
            return filename.startsWith(ipro); 
        }
    });
    
        5
  •  4
  •   Ivar    7 年前

    我的解决方案是基于我在谷歌找到的帖子。我认为,即使我的帖子是一条旧线,也不会对我造成伤害。

    这段代码给出的唯一优点是它也可以遍历子目录。

    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;
    }
    
        6
  •  1
  •   Dragan Menoski    11 年前
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Path;
    import java.nio.file.PathMatcher;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.ArrayList;
    
    public class FileFinder extends SimpleFileVisitor<Path> {
        private PathMatcher matcher;
        public ArrayList<Path> foundPaths = new ArrayList<>();
    
        public FileFinder(String pattern) {
            matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
        }
    
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            Path name = file.getFileName();
    
            if (matcher.matches(name)) {
                foundPaths.add(file);
            }
    
            return FileVisitResult.CONTINUE;
        }
    }
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.LinkOption;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            Path fileDir = Paths.get("files");
            FileFinder finder = new FileFinder("*.txt");
            Files.walkFileTree(fileDir, finder);
    
            ArrayList<Path> foundFiles = finder.foundPaths;
    
            if (foundFiles.size() > 0) {
                for (Path path : foundFiles) {
                    System.out.println(path.toRealPath(LinkOption.NOFOLLOW_LINKS));
                }
            } else {
                System.out.println("No files were founds!");
            }
        }
    }
    
        7
  •  -2
  •   Milhous    15 年前

    这是我的平台特定代码(Unix)

    public static List<File> findFiles(String dir, String... names)
        {
            LinkedList<String> command = new LinkedList<String>();
            command.add("/usr/bin/find");
            command.add(dir);
            List<File> result = new LinkedList<File>();
            if (names.length > 1)
                {
                    List<String> newNames = new LinkedList<String>(Arrays.asList(names));
                    String first = newNames.remove(0);
                    command.add("-name");
                    command.add(first);
                    for (String newName : newNames)
                        {
                            command.add("-or");
                            command.add("-name");
                            command.add(newName);
                        }
                }
            else if (names.length > 0)
                {
                    command.add("-name");
                    command.add(names[0]);
                }
            try
                {
                    ProcessBuilder pb = new ProcessBuilder(command);
                    Process p = pb.start();
                    p.waitFor();
                    InputStream is = p.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                    BufferedReader br = new BufferedReader(isr);
                    String line;
                    while ((line = br.readLine()) != null)
                        {
                            // System.err.println(line);
                            result.add(new File(line));
                        }
                    p.destroy();
                }
            catch (Exception e)
                {
                    e.printStackTrace();
                }
            return result;
        }
    
        8
  •  -2
  •   Abhi    11 年前

    导入org.apache.commons.io.fileutils;

    list htmfilelist=new arraylist();

    对于(文件文件:(列表)fileutils.listfiles(新文件(srcdir),新字符串[]“txt”,“txt”, 正确))。{ htmfilelist.add(文件);

    这是我添加目录中所有文本文件的最新代码