项目 在 Java 技能树

找出重复文件

构建只读 Java 重复文件检查器,以实际字节确认内容相同,并在保留全部原件的同时保存完整路径分组。

项目Java

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

找出重复文件是一门面向准备处理真实文件内容的学习者的 Java 实践项目课程。你将构建一个可复用的只读检查器,找出内容相同文件的完整分组,并保留每一条原始路径。名称不同的文件可能字节相同;名称或大小相同的文件也可能内容不同。

课程包含两个引导实验和一个挑战实验。先读取二进制流,保存完整路径清单;再用大小和 SHA-256 指纹缩小候选范围,通过实际字节比较确认相同,并在修改练习副本后重新生成报告。挑战实验将同一机制用于另一份资料集。每个实验独立初始化。建议预留约 150 分钟,这是包含阅读和普通纠错的作者估计。

你将学到什么

完成本课程后,你将能够:

  • 使用 try-with-resources 读取二进制文件,并使用每次读取实际返回的长度;
  • 计算 SHA-256 候选指纹,完整记录每条路径,包括空文件和最后不足一个缓冲区的数据;
  • 通过真实字节比较确认候选相同,而不把名称、大小或摘要当作证明;
  • 保留重复组的全部成员,包括三份及以上的组,不把单独文件列为重复;
  • 修改练习文件后重新生成反映当前内容的报告,同时保留全部原始文件;
  • 将报告写在扫描目录树之外,并将不可读或不支持的输入报告为失败。

本课程适合谁

本课程适合希望在实用终端程序中组合标准库文件处理、集合和异常知识的 Java 学习者。

前置要求: Java 类、方法、基础集合、异常、初步文件读取和基本终端路径操作。管理社区工具借还,尤其第二个引导实验,提供文件读取与 I/O 异常基础;具备同等知识也可以。本课程会在使用前解释二进制流、读取长度、资源关闭以及候选筛选与字节比较的区别。

学习环境: LabEx 提供浏览器中的 WebIDE,包含集成终端、Java 编译器、起始代码和真实样本文件,其中包括小型 PNG 图片。无需在本机安装 Java 即可运行并检查文件。程序命令、标签和输出保留英文。

常见问题

程序会删除重复文件吗?

不会。交付物是检查器和供审阅的完整分组报告。全部原件都会保留;自动删除、修复和磁盘清理不在项目范围内。

为什么计算指纹后还要比较字节?

大小和 SHA-256 帮助选择候选。最终判断来自实际内容比较,因此程序既能保留所有相同文件的路径,也能区分同大小但内容不同的文件。本课程不把摘要当作内容相等的数学证明。

项目支持哪些输入?

支持扫描期间保持稳定的普通文件和目录,包括含空格和 UTF-8 字符的文件名。符号链接、特殊文件,以及包含制表符或换行的路径会被拒绝。读取失败不能伪装成完整扫描成功。报告放在输入目录树之外。各实验自带数据,无需旧 VM 文件;本项目不提供并发快照保证。

教师

labby
Labby
Labby is the LabEx teacher.

为您推荐

no data