问题标签 [file-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1747 浏览

diff - 什么工具可以对同一文件中的两个部分进行视觉比较?

好的文件比较工具已经被讨论过了,但我的问题更奇特。是否有任何可视化文本比较工具(如 WinMerge)可以让我轻松地对同一文件中的两个部分进行可视化比较?

我在 vcproj 文件中有多个配置,需要维护它们。手动执行此操作很痛苦——拆分窗口,逐个字符滚动。最重要的是,xml 非常冗长,并且占用了大量的屏幕空间。我不敢相信没有工具可以进行自动文件部分比较,因为这听起来是一个非常常见的问题。

请不要让我使用属性页,我不想要更复杂,我想要更少。手动拆分成文件然后比较它们也太中世纪了(反正我现在正在这样做)。

0 投票
1 回答
204 浏览

.net - 用于合并文件的 .NET 库

您是否知道任何可用于比较和特别是合并两个文件(如 .pst)的 .net 库 - 如果开源或便宜,那将是最好的。

0 投票
5 回答
3343 浏览

eclipse - Eclipse(3.5)如何横向比较文件?

通常 Eclipse 的“文件比较”会比较垂直面板中的文件,例如:

使用垂直面板进行比较

有没有办法可以横向比较它们,例如:

使用水平面板进行比较 http://www.sqlservertool.com/images/ad_hex_diff_small.gif

每次滚动查看更改内容太累了!

谢谢

0 投票
5 回答
3601 浏览

c# - C# 文件比较实用程序

您能否推荐一个能够很好地处理 C# 的文件比较实用程序。我已经尝试过 WinMerge、BeyondCompare 和 KDiff,但它们还不够好,例如,如果我有同名的函数但放置在文件的不同区域,它们会将其显示为差异。

0 投票
3 回答
1539 浏览

c# - 我怎么知道“组装”是否真的发生了变化?

我在 VS2005 中创建了一个简单的“Hello World”应用程序。这是一个直接的控制台应用程序;它只包含以下几行:

当我尝试重建同一个控制台应用程序而不执行任何更改时(只需按下重建按钮),我得到一个略有不同的可执行文件。(我从第一个和第二个生成的可执行文件中生成了一个 SHA-1 哈希,它是不同的!)

为什么没有代码更改时会有所不同?究竟发生了什么变化?我使用十六进制编辑器进行比较,只看到几个不同的字节。

我想我的最终问题是,我怎么知道“组装”是否真的发生了变化?(当然不看文件版本、文件大小等)

编辑

到目前为止,我们已经确定区别在于 PE 标头(时间戳和一些调试数据)。在我重新发明轮子之前,是否有忽略 PE 标头的“程序集比较”工具?

谢谢,伊恩

0 投票
4 回答
16192 浏览

c# - (以编程方式)比较PDF的可靠方法?

可能重复:
用于比较大量 PDF 文件的工具?

我处于典型的场景中,企业为您提供了一堆的pdf 表格用于新年,没有任何修订说明,您应该弄清楚与前一年的不同之处。

我在这里谈论大量表格,因此我试图找到一种方法来比较 PDF 以概述差异,而无需人们手动浏览每一个表格。

我的想法是从 PDF 中提取所有文本并将其转储到 .txt 中,然后在文本文件上运行差异,但这听起来很可怕。

我的问题是以编程方式提出的,但我会对任何用于比较 PDF 的可靠工具感到满意,并且主要希望从人们的经验中获得想法。也愿意接受任何编程解决方案(最好在 C# 中,但请提出任何想法)。

0 投票
1 回答
1829 浏览

objective-c - NSFileManager contentsEqualAtPath:andPath: 比较校验和数据

NSFileManager方法是否contentsEqualAtPath:andPath:创建动态校验和来比较两个文件,它是打开文件头并比较文件头详细信息还是使用其他方法进行比较?

我有一个包含 200,000 个左右文件的列表,用于比较本地文件与远程服务器卷上的文件的比较位置。本地文件将在过去的某个时间从远程服务器卷复制,我将遍历文件列表以比较每个文件,然后将任何较新的文件从远程服务器卷复制到本地计算机(覆盖任何现存的)。不能保证远程服务器文件是由本地用户创建的(而且很可能不会)。

由于文件很小(大约 4K 大小),复杂的文件比较操作可能需要几乎与复制操作一样长的时间。

此操作可能(可以想象但不太可能)在用户会话中多次发生,因此我需要确保我使用的是最有效的检查方法。

操作本身将在单独的线程上运行,因此在操作完成时我不会遇到捆绑用户的问题。

我已经开始实施以对此进行测试,但很想看看其他人是否有过快速比较数千个文件的经验,以确定如果存在较新的文件,哪些文件需要更新。如果你有,你有什么要避免的提示或陷阱吗?

非常感谢任何建议。

更新

再考虑一下,保留一个跟踪任何更改图像的最后更新时间戳的文件并保留一个执行相同操作的本地文件并比较这两个文档可能会更有益......随着我的进步,将更新更多。

0 投票
4 回答
1422 浏览

java - Java中用于文件比较的编程方法

比较两个十六进制文件签名的相似性的最佳方法是什么。

更具体地说,我想做的是采用 .exe 文件的十六进制表示并将其与一系列病毒签名进行比较。对于这种方法,我计划将文件 (exe) 十六进制表示分解为 N 个字符的单独组(即 10 个十六进制字符),并对病毒签名执行相同的操作。我的目标是执行某种启发式方法,因此统计检查此 exe 文件是否与已知病毒签名具有 X% 的相似性。

我想到的最简单且可能非常错误的方法是将 exe[n, n-1] 与病毒 [n, n-1] 进行比较,其中数组中的每个元素都是一个子数组,因此 exe1[0, 9]对抗病毒1[0,9]。每个子集都将进行统计评分。

你可以意识到会有大量的比较,因此非常非常慢。所以我想问问你们是否可以想出更好的方法来进行这种比较,例如一起实现不同的数据结构。

这是为我的 BSc 做的一个项目,我正在尝试开发一种算法来检测多态恶意软件,这只是整个系统的一部分,另一个是基于遗传算法来进化静态病毒签名。非常欢迎任何建议、评论或一般信息(例如资源)。


定义:多态恶意软件(病毒、蠕虫等)保持与其“原始”版本相同的功能和有效负载,但具有明显不同的结构(变体)。他们通过代码混淆来实现这一点,从而改变他们的十六进制签名。用于多态性的一些技术是:格式更改(插入删除空格)、变量重命名、语句重新排列、垃圾代码添加、语句替换(x=1 更改为 x=y/5,其中 y=5)、交换控制语句。就像流感病毒发生变异并因此疫苗接种无效一样,多态恶意软件也会发生变异以避免被发现。


更新:在你们给我关于阅读内容的建议之后;我这样做了,但这让我更加困惑。我发现了几种适用于我的问题的距离算法,例如;

  • 最长公共子序列
  • 文斯坦算法
  • Needleman-Wunsch 算法
  • 史密斯-沃特曼算法
  • 博耶摩尔算法
  • Aho Corasick 算法

但现在我不知道该使用哪个,他们似乎都以不同的方式做同样的事情。我会继续做研究,以便更好地理解每一个;但与此同时,您能否给我您的意见,which might be more suitable以便我在研究期间优先考虑它并深入研究它。


更新 2:我最终使用了 LCSubsequence、LCSubstring 和 Levenshtein Distance 的合并。谢谢大家的建议。

GitHub上有一份完成的论文

0 投票
2 回答
6161 浏览

unix - 在 unix 中使用 sdiff 输出边差的问题

我正在使用以下 sdiff 命令来获取两个文件的并排差异。列宽作为选项之一给出

sdiff -w170 /tmp/captureFile /tmp/referenceFile (或 diff -y )

如果我使用 -w 130 则删除一些字符。即使在下一行,它们也不会出现在输出中。他们失去了。

如果使用 -w 170 ,则由于左列中有多余的字符,右列会移动,由于屏幕宽度较小,因此在左列部分看到的字符很少。

那么是否有任何选项不剥离字符,然后在 sdiff 命令输出的同一列中的下一行?

0 投票
5 回答
1961 浏览

java - Java中文件增量/版本控制的现有解决方案

在对文件备份进行版本控制或优化时,一种想法是仅使用已修改的增量或数据。

起初这听起来像是一个简单的想法,但实际上确定未修改数据的结束位置和新数据的开始位置是一项艰巨的任务。

是否存在已经执行此类操作的现有框架或有效的文件比较算法?