Java – 读取文件夹中的所有.txt文件

比方说,我有一个名为maps的文件夹,在内部maps我有map1.txtmap2.txt,map3.txt 。 如何使用Java和BufferReader读取文件夹maps所有.txt文件(如果可能的话)?

下面的内容应该让你去,请注意我使用apache commons FileUtils而不是为了简单而搞乱缓冲区和流…

 File folder = new File("/path/to/files"); File[] listOfFiles = folder.listFiles(); for (int i = 0; i < listOfFiles.length; i++) { File file = listOfFiles[i]; if (file.isFile() && file.getName().endsWith(".txt")) { String content = FileUtils.readFileToString(file); /* do somthing with content */ } } 

我会更进一步@Andrew White答案(+1 BTW),并建议您使用FileNameFilter仅列出相关文件:

 FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".txt"); } }; File folder = new File("/path/to/files"); File[] listOfFiles = folder.listFiles(filter); for (int i = 0; i < listOfFiles.length; i++) { File file = listOfFiles[i]; String content = FileUtils.readFileToString(file); // do something with the file } 
  final File folder = new File("C:/Dev Tools/apache-tomcat-6.0.37/webapps/ROOT/somefile"); for (final File fileEntry : folder.listFiles()) { System.out.println("FileEntry Directory "+fileEntry); 

我认为这是从地图和子文件夹中读取所有.txt文件的好方法

  private static void addfiles (File input,ArrayList files) { if(input.isDirectory()) { ArrayList  path = new ArrayList(Arrays.asList(input.listFiles())); for(int i=0 ; i0) { int lastIndex = name.lastIndexOf('.'); String str = name.substring(lastIndex); if(str.equals(".txt")) { files.add(path.get(i)); } } } } } if(input.isFile()) { String name=(input.getName()); if(name.lastIndexOf('.')>0) { int lastIndex = name.lastIndexOf('.'); String str = name.substring(lastIndex); if(str.equals(".txt")) { files.add(input); } } } } 

如果你想要一个更好的方法来使用新的java.nio api,那么这就是从java文档中获取的方式

 Path dir = ...; try (DirectoryStream stream = Files.newDirectoryStream(dir, "*.txt")) { for (Path entry: stream) { System.out.println(entry.getFileName()); } } catch (IOException x) { // IOException can never be thrown by the iteration. // In this snippet, it can // only be thrown by newDirectoryStream. System.err.println(x); } 

仅使用JDK,如果所有文件都在一个目录中:

 File dir = new File("path/to/files/"); for (File file : dir.listFiles()) { Scanner s = new Scanner(file); // do something with file s.close(); } 

要排除文件,可以使用listFiles(FileFilter)