大文件对比
逐行或逐字节对比两个本地大文件,可设置空白、换行符和编码选项,并下载对比报告。
输入内容和文件始终留在浏览器中
文件
原始文件
任意本地文件,不会离开此设备。
修改后的文件
任意本地文件,不会离开此设备。
两个文件都在 Web Worker 中按 1 MiB 分块读取。每一行只保留哈希值,屏幕上的文本从文件中重新读取。不会上传或保存任何内容。
选择原始文件和修改后的文件,即可查看变化的行或字节范围。
报告
每个文件最多 10,000,000 行。内存约为每行 8 字节,匹配期间每行最多再增加 9 字节。行在应用空白和换行规则后按哈希匹配。表格中的行截断为 2,000 个字符;报告写入完整行,最长 16 MiB。二进制模式保留 100,000 个范围。
本页内容
大文件对比用于比较两个大到无法粘贴进文本框的本地文件:数 GB 的日志、CSV 导出、SQL 转储或构建产物。文本文件逐行对比,二进制文件逐字节对比,结果以虚拟化的变化表格呈现,并可下载报告。
详细功能
两个文件都在 Web Worker 中按 1 MiB 分块读取。工具不保留文本,而是把每一行变成 64 位哈希,因此每个文件约占每行 8 字节。空白和换行选项在计算哈希时生效:精确对比、忽略行尾空白、忽略空白数量变化或忽略所有空白;CRLF 和 LF 可以视为同一种换行。UTF-8 和 UTF-16 按 Unicode 字符计算哈希,因此用这两种编码保存的相同文本可以匹配。Windows-1251 或 Shift_JIS 等传统编码按字节对比。
行匹配器先跳过共同的开头和结尾,再以在两个文件中都只出现一次的行作为锚点(patience diff),并用 Myers 算法对齐中间的空隙。耗时过长的空隙会显示为一个替换块,页面会给出提示。只有屏幕上可见的行才会从文件中重新读取,因此滚动浏览数百万行变化依然流畅。
二进制模式按块对比字节,列出每个不同范围的偏移、长度以及两侧的前 16 个字节;文件大小差异作为最后一个范围。文本报告为 unified diff(.diff),二进制报告为 CSV,两者都以流式方式写入所选文件。
实用示例
两个日志文件:一个 200 万行的日志与其副本对比,副本中有 40 行的级别从 INFO 改为 WARN,结果显示 40 行删除、40 行新增,分布在不同的差异块中,每块带三行上下文。
Windows 与 Unix 副本:CRLF 文件与其 LF 副本对比,开启换行选项时没有差异;关闭后每一行都不同。
重新格式化的缩进:选择“忽略空白数量变化”,仅在单词之间的空格或制表符上不同的行会被视为相同。
固件镜像:在二进制模式下,两个仅在版本字符串和校验和上不同的构建会显示两个短范围,并以 hex 列出新旧字节。
如何使用此工具
选择文件
拖入或选择原始文件和修改后的文件。两者都选好后对比立即开始。
设置选项
选择“自动检测”“文本行”或“二进制字节”,以及编码、空白规则和是否考虑换行符。点击“对比”以新选项重新运行。
查看变化
摘要统计删除和新增的行数及差异块数。使用“上一处变化”和“下一处变化”在差异块之间跳转,调整“上下文行数”可显示更多或更少的周围未变化行。
下载报告
文本文件下载 unified diff,二进制文件下载字节范围的 CSV。
提示和最佳实践
- 当任一文件的前 8 KiB 中含有 NUL 字节时,“自动检测”会切换到二进制模式,除非文件以 UTF-16 BOM 开头。
- 行按哈希对比。两个不同的行拥有相同 64 位哈希的可能性极低,而且表格始终显示真实文本。
- 调换顺序的文本块会显示为一次删除和一次新增,与 diff -u 相同。
- “取消”会立即停止 Worker;文件仍保持选中。
- 如果只想快速查看两段简短文本,文本差异查看器可以高亮行内变化的单词。