当前位置: 首页 > news >正文

关于获取某目录及子目录下所有文件且不包含隐藏文件

最近比较忙,很少写blog了!!!

关于获取目录及子目录下所有文件是常遇到的功能,一般通过递归遍历实现。而生产场景中,一般是遍历nas上的目录,在nas上利用File.listFiles(),在linux系统上无法获取含有中文名的文件的。这里是通过java.nio.file来实现。

直接上代码吧

import java.io.IOException; 
import java.nio.file.*; 
import java.nio.file.attribute.BasicFileAttributes; 
import java.util.ArrayList; 
import java.util.List; /*** 遍历目录及其子目录,获取所有非隐藏文件 */
public class NonHiddenFileWalker {/*** 遍历指定目录,获取所有非隐藏文件** @param startDir 起始目录路径* @return 非隐藏文件的路径列表 * @throws IOException 如果访问文件系统出错*/public static List<Path> walkNonHiddenFiles(String startDir) throws IOException {Path rootPath = Paths.get(startDir); List<Path> fileList = new ArrayList<>();// 定义文件访问器SimpleFileVisitor<Path> visitor = new SimpleFileVisitor<>() {// 访问目录前检查是否为隐藏目录@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {if (Files.isHidden(dir))  {return FileVisitResult.SKIP_SUBTREE; // 跳过隐藏目录及其子目录}return FileVisitResult.CONTINUE;}// 处理文件 @Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {if (!Files.isHidden(file))  {fileList.add(file);  // 只添加非隐藏文件}return FileVisitResult.CONTINUE;}// 处理访问失败的情况@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) {System.err.println(" 访问失败: " + file + " - " + exc.getMessage()); return FileVisitResult.CONTINUE;}};// 执行文件遍历Files.walkFileTree(rootPath,  visitor);return fileList;}/*** 主程序入口*/public static void main(String[] args) {try {String directoryPath = "/target/directory"; // 替换为你的目标路径List<Path> nonHiddenFiles = walkNonHiddenFiles(directoryPath);System.out.println(" 找到以下非隐藏文件:");for (Path file : nonHiddenFiles) {System.out.println(file.toString()); }} catch (IOException e) {System.err.println(" 发生错误: " + e.getMessage()); e.printStackTrace(); }}
}

http://www.dtcms.com/a/306647.html

相关文章:

  • dify + mcp 实现图片 ocr 识别
  • Apache RocketMQ 的核心概念(Core Concepts)
  • 解决 Node.js 托管 React 静态资源的跨域问题
  • SpringBoot之整合SSM步骤
  • 基因组选择育种-2.3多性状与多组学整合GS-GWAS
  • Python 使用pandas库实现Excel字典码表对照自动化处理
  • 从单体到分布式:解锁架构进化密码
  • MS Access 数据库修复:修复损坏的 MDB 文件的快速指南
  • llama factory本地部署常见问题
  • 大模型的开发应用(二十):AIGC原理
  • 从数据到预测:InfluxDB+Prophet时间序列分析案例实战
  • Promise完全体总结
  • 会吸的簸箕专利拆解:迷你真空组件的吸力控制与吸入口设计原理
  • React 编程式导航
  • 基于 Flask 和 MySQL 的期货数据分析系统
  • 5.Origin2021如何绘制柱状+折线双Y轴图?
  • Gemini CLI 怎么保存会话?两个命令解决 AI 失忆问题
  • 嵌入式开发学习———Linux环境下数据结构学习(五)
  • 一个使用共享内存进行进程间通信的程序,主要功能是创建并读取共享内存中的数据。具体作用如下:
  • 《Flutter篇第二章》MasonryGridView瀑布流列表
  • 机器视觉引导机器人修磨加工系统助力芯片封装
  • 机器人在动态表面上行走的强化学习研究
  • Rust在土木工程中的创新应用
  • Kotlin -> Kotlin Lambda 表达式与 Function 接口的关系
  • EC2 Amazon Linux 快速安装Airbyte (abctl)
  • B 站排名优化:不同领域的差异化实战策略
  • Ubuntu24.04换源方法
  • macOS安装配置Unbound DNS完整指南
  • 地质测绘专业转码容易吗?外业对于转码有帮助吗?
  • WordPress与主流CMS拿Webshell实战