Java: find .txt files in the specified folder

Is there any built-in Java code that will parse this folder and look for it for .txt files?

+43
java file
Sep 06 '09 at 5:37
source share
8 answers

You can use the listFiles() method provided by the java.io.File class.

 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"); } } ); } } 
+107
Sep 06 '09 at 6:15
source share

Try:

 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; } 

You want to make case insensitive in this case:

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

If you want to search recursively through the directory tree for text files, you should be able to adapt the above as a recursive function or an iterative function using the stack.

+20
Sep 06 '09 at 5:43
source share
 import org.apache.commons.io.filefilter.WildcardFileFilter; ......... ......... File dir = new File(fileDir); FileFilter fileFilter = new WildcardFileFilter("*.txt"); File[] files = dir.listFiles(fileFilter); 

The code above works great for me

+15
Sep 09 '12 at 8:59
source share

This is really useful, I used it with slight modifications:

 filename=directory.list(new FilenameFilter() { public boolean accept(File dir, String filename) { return filename.startsWith(ipro); } }); 
+6
Sep 08 2018-11-11T00:
source share

I made my decision based on the messages I found here with Google. And I thought that there was no harm to my mail message, even if it is an old thread.

The only plus point this code gives is that it can also iterate through subdirectories.

 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; 

The method is as follows:

 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; } 
+2
Dec 27 '12 at 8:59
source share
 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!"); } } } 
+1
Apr 26
source share

Here is my platform specific code (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; } 
-2
Sep 06 '09 at 6:01
source share

import org.apache.commons.io.FileUtils;

List htmFileList = new ArrayList ();

for (File: (List) FileUtils.listFiles (new file (srcDir), new String [] {"txt", "TXT"}, true)) {htmFileList.add (file); }

This is my last code to add all text files from a directory

-2
Apr 25 '13 at 13:09
source share



All Articles