Java查找指定文件夹下的所有文件

  • 为什么会有这个需求呢?

前两天有个面试题,让写出读取文件夹下所有文件的名称,诶,说来惭愧,好长一段时间都在用框架写怎删改查,关于文件读写的API早就忘了,再加上当时学的不牢固,那题就没做出来(说到底还是自己的基础不好)。这不是闲了下来,自己赶紧记录下来

  • 递归读取指定文件夹下的所有文件,并保存到指定的txt文件中,不过递归的效率确实不怎么好。
import org.junit.Test; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; /** * @Author: stone * @Date: 2021/03/28 23:26:13 * @ClassName: ReadTxt * @Description: **/ public class ReadTxt { @Test public void WriteTxt() throws Exception { String path = ""; //这里写你要读取的文件夹 String outputPath = "E:\\fileNameList.txt"; //这里写你要保存到什么文件中,追加保存,不会覆盖上一次保存的文件 ArrayList<String> fileNameList = readFiles(path, new ArrayList<String>()); System.out.println(fileNameList.size()); for (int i = 0; i < fileNameList.size(); i++) { outputToTxt(fileNameList.get(i), outputPath); } } /** * @Author: stone * @Param: * @return: * @Description: 递归读取文件路径下的所有文件 **/ public ArrayList<String> readFiles(String path, ArrayList<String> fileNameList) { File file = new File(path); if (file.isDirectory()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { readFiles(files[i].getPath(), fileNameList); } else { String path1 = files[i].getPath(); String fileName = path1.substring(path1.lastIndexOf("\\") + 1); // Windows下,目录是双斜杠 fileNameList.add(fileName); } } } else { String path1 = file.getPath(); String fileName = path1.substring(path1.lastIndexOf("\\") + 1); fileNameList.add(fileName); } return fileNameList; } /** * @Author: stone * @Param: * @return: * @Description: 将内容输入到txt文件保存 **/ public void outputToTxt(String content, String outputPath) throws Exception { FileWriter fileWriter = new FileWriter(outputPath, true); // true代表追加内容 PrintWriter printWriter = new PrintWriter(fileWriter); printWriter.println(content); printWriter.close(); fileWriter.close(); printWriter.flush(); } }
  • 使用JavaAPI
import org.junit.Test; import java.io.File; /** * @Author: stone * @Date: 2021/03/29 12:32:04 * @ClassName: fileTest * @Description: **/ public class fileTest { public void listFilesForFolder(File folder) { for (File fileEntry : folder.listFiles()) { if (fileEntry.isDirectory()) { listFilesForFolder(fileEntry); } else { System.out.println(fileEntry.getName()); } } } @Test public void testFIle() { File folder = new File(""); //自己定义要查找的路径 listFilesForFolder(folder); // 结果打印在控制台 } }

参考:


__EOF__

本文作者stone
本文链接https://www.cnblogs.com/qscgy/p/14591857.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zko  阅读(1793)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示