好用的文件对比工具都收费?我用大模型手搓了一个

做这个工具的动机
平时整理代码、迁移项目、同步配置文件时,经常会遇到一个麻烦:两个目录看起来差不多,但不知道哪些文件内容真的变了。
市面上当然有成熟的文件对比工具,而且不少做得很好。但真正顺手的功能,往往都在收费版里:目录对比、内容同步、双栏编辑、差异复制,单独看都不复杂,组合起来就开始收费。
以前遇到这种情况,大概率就是忍一忍,或者继续找替代软件。现在有了大模型,思路就变了:既然需求很明确,为什么不直接手搓一个?
这个工具的出发点不是替代专业 IDE,也不是做一个商业级 diff 产品,而是解决自己的高频小痛点:我只想快速知道两个目录哪些文件一样、哪些不同、哪边缺了,并且能顺手同步或编辑。
只看文件名和修改时间不够可靠。修改时间可能被复制过程改变,文件大小也不能证明内容一致。真正稳一点的方式,是对文件内容做 hash,再按相对路径逐个比较。
所以这次我做了一个小型 Java 桌面工具,目标很明确:
- 可以选择两个文件做对比
- 可以选择两个目录做对比
- 用文件 hash 判断内容是否一致
- 能把缺失或不同的文件同步到另一边
- 结果要直观:左边看左目录,右边看右目录
- 相同文件标绿,不同文件标红
- 双击后可以直接编辑左右两边内容
最终效果如下。

第一版:先把核心能力跑通
最开始的需求很简单:
用 Java 写一个文件对比工具,支持选择目录对比、选择文件对比、文件内容使用文件 hash 做对比,并支持内容同步。
这个版本我选择用 Java Swing 做界面,原因是它只依赖 JDK,不需要额外安装框架,发给别人也比较容易运行。
核心实现分成三块:
- 路径选择:用
JFileChooser支持文件和目录选择。 - 内容判断:用
SHA-256读取文件内容并计算 hash。 - 同步复制:对缺失或 hash 不同的文件,使用
Files.copy覆盖复制。
这里没有把 hash 值当成最终展示重点。hash 是内部判断依据,用户真正关心的是“这个文件是否一样”“哪边缺了”“能不能同步”。
第二版:界面从单表改成左右双栏
第一版能用,但展示不够直观:所有文件混在一个表里,看起来像日志,不像对比工具。
于是第二轮改造的提示是:
不用显示 md5,将文件两边进行拆分,左边显示左边文件,右边显示右边目录文件,相同文件标绿,不同文件标红,然后双击可以编辑。
这一版改动的重点是交互:
- 去掉界面上的 hash 列
- 主界面拆成左右两个文件列表
- 左边只显示左侧文件信息,右边只显示右侧文件信息
- 相同文件用绿色背景
- 不同或缺失文件用红色背景
- 双击文件行打开编辑窗口
颜色虽然简单,但效率提升很明显:绿色表示不用管,红色表示需要处理。
第三版:双栏滚动和双文件编辑
目录文件一多,左右两边如果不能同步滚动,就会很难对齐查看。所以继续迭代:
滚动时候两边文件一起滚动,双击编辑时两个文件进行对比,不同的可以进行向左或者向右复制不同的内容。
这个版本加入了两个关键功能:
- 主界面左右列表滚动联动,选中行也联动。
- 双击后打开左右文件对比编辑器。
编辑器里做了行级差异高亮,左右文本区域同步滚动,并提供几个常用按钮:
- Copy selected Left -> Right
- Copy selected Right -> Left
- Copy all Left -> Right
- Copy all Right -> Left
- Save

这不是专业 IDE 级别的 diff 算法,但对配置文件、脚本文件、说明文档这类文本已经够用。它解决的是一个很具体的问题:发现不同之后,不用再切到别的软件里复制粘贴。
实现思路拆解
目录对比时,程序会递归扫描左右目录,把每个文件转换成相对路径。
比如:
left/src/App.java
right/src/App.java
它们都会被归一成:
src/App.java
然后用这个相对路径做配对:
- 两边都有:计算 hash,判断
Same或Different - 只有左边有:标记
Left only - 只有右边有:标记
Right only
同步时逻辑也很直接:
Left -> Right:左边存在且右边缺失或不同,就复制到右边Right -> Left:右边存在且左边缺失或不同,就复制到左边- 不做删除操作,避免误删目标目录里的额外文件
这次用到的提示词
如果你也想让大模型直接生成类似工具,可以不用拆成很多轮,直接用下面这个最终版提示词。
请用 Java Swing 写一个文件对比同步工具,要求:
1. 支持选择两个文件进行对比,也支持选择两个目录进行递归对比。
2. 文件内容使用 SHA-256 hash 判断是否一致,不要只依赖文件名、大小或修改时间。
3. 目录对比时按相对路径匹配文件。
4. 主界面左右拆分显示,左边显示左侧文件,右边显示右侧文件。
5. 相同文件行标绿色,不同或缺失文件行标红色。
6. 左右结果列表滚动联动,选中行联动。
7. 支持从左到右、从右到左同步缺失或不同文件,不做删除操作。
8. 双击文件行后打开左右文件对比编辑窗口。
9. 编辑窗口中左右文本同步滚动,不同行高亮。
10. 支持把选中文本或全部文本向左、向右复制,并支持保存。
11. 尽量只依赖 JDK,不引入外部库。
小结
这个工具不复杂,但它很实用。
它把“比较目录”“判断内容是否一致”“同步文件”“局部复制不同内容”这几个动作放到一个流程里,减少了来回切换工具的成本。
更重要的是,这种小工具很适合用 AI 辅助开发。以前觉得“好用的软件要付费,那就先凑合用”,现在可以换个思路:只要需求边界清楚,就可以让大模型先搭出一个可用版本,再按自己的工作流继续改。
如果只看这次实践给我的启发,就是一句话:很多工作流里的小痛点,不一定要等现成软件解决,有了大模型,自己手搓一个轻量工具,往往更快。
当然,这个版本还只是一个能跑起来的原型,实际使用体验还不算太好。比如差异对比还比较粗糙,编辑体验也没有专业工具那么顺手。后面我会继续优化它,把它从“能用”慢慢打磨到“好用”。
更多推荐


所有评论(0)