如何用c#实现比较两个文件的内容,并得出比较结果

问题描述

因为两个文件顺序不是完全相同的,如果错开一行可能导致结果相差很多。我的想法是首先需要找到最大匹配度的再去进行比较,好像很困难。不知道uedit是如何实现的。或者可以通过命令行调用的软件且能导出结果的帮忙推荐个也行。

解决方案

解决方案二:
你想多了,想复杂了。这种比较不需要什么“最大匹配度”概念。例如:1、2、3、4、5、6与1、2、a、b、4、5、6你可以说是前边“插入”了两行,也可以说是后边“缺少”了两行,同样一个话可以正反面都是同一个意思,只不过给人的印象则完全颠倒。所谓“最大匹配度”概念,是说要在许多中可能的操作步骤(例如几十种)中选择一种作为结论。然而你这个东西完全只需要考虑上述2种说法,而且在文件对比的UI设计上也根本不明确区分(而是模糊显示)“插入还是缺少”。所以这种问题根本就不要去纠结什么“最大匹配”概念。
解决方案三:
所谓“最大匹配度”概念,考虑了某些字眼前后颠倒、排版错位、同音字、错别字、同义词转换、章节段落的不同出场次序.......许多种可能性,这时候才叫做“匹配度”。可以说,那些没有技术含量的“匹配度”,或者是不懂匹配度的人所说的“匹配度”概念,都不可信。
解决方案四:
引用1楼sp1234的回复:

你想多了,想复杂了。这种比较不需要什么“最大匹配度”概念。例如:1、2、3、4、5、6与1、2、a、b、4、5、6你可以说是前边“插入”了两行,也可以说是后边“缺少”了两行,同样一个话可以正反面都是同一个意思,只不过给人的印象则完全颠倒。所谓“最大匹配度”概念,是说要在许多中可能的操作步骤(例如几十种)中选择一种作为结论。然而你这个东西完全只需要考虑上述2种说法,而且在文件对比的UI设计上也根本不明确区分(而是模糊显示)“插入还是缺少”。所以这种问题根本就不要去纠结什么“最大匹配”概念。

我想LZ的意思是想要SVN那种比较不同版本之间修改的那种样子吧。就像下面图里面这张我也很好奇这种比较的大致思路是什么,特别是那种大文本文件的比较,几M甚至几十M的时候感觉会很麻烦,效率低,请版主大大解惑啊。
解决方案五:
引用1楼sp1234的回复:

你想多了,想复杂了。这种比较不需要什么“最大匹配度”概念。例如:1、2、3、4、5、6与1、2、a、b、4、5、6你可以说是前边“插入”了两行,也可以说是后边“缺少”了两行,同样一个话可以正反面都是同一个意思,只不过给人的印象则完全颠倒。所谓“最大匹配度”概念,是说要在许多中可能的操作步骤(例如几十种)中选择一种作为结论。然而你这个东西完全只需要考虑上述2种说法,而且在文件对比的UI设计上也根本不明确区分(而是模糊显示)“插入还是缺少”。所以这种问题根本就不要去纠结什么“最大匹配”概念。

我想LZ的意思是想要SVN那种比较不同版本之间修改的那种样子吧。就像下面图里面这张我也很好奇这种比较的大致思路是什么,特别是那种大文本文件的比较,几M甚至几十M的时候感觉会很麻烦,效率低,请版主大大解惑啊。
解决方案六:
比较两个文件的差异:windows有fc命令linux有diff命令如果不是为了学术探讨,完全可以直接调用系统命令去进行虽然不知道那些命令内部是如何实现的但个人倾向于基于编辑距离算法来解决

时间: 2024-11-16 00:13:51

如何用c#实现比较两个文件的内容,并得出比较结果的相关文章

如何用C#实现对比两个文件夹内容的差异

问题描述 解决方案 解决方案二:只比较是否有区别,只要做md5就知道了,如果要具体到何处有区别,我想到的只能是逐行逐字逐字节比较了解决方案三:嗯我想对比两个文件夹的时候展现出文件夹内容的不同然后显示差异报告不是对比文件的不同解决方案四:这没什么好说的呀.c#的File类,Direcotry类已经提供了足够的方便的方法.你就一句句写代码就是了.剩下的问题其实没有技术问题,就是业务规则.你是要比较一个文件夹下的文件数是否一致?你是要比较文件名是否一致?比较文件内容是否一致?都是业务规则.技术上没有任

Visual C# 2005中实现比较两个文件的内容是否完全相同

其实编写这一个函数的主要目的是要示范如何执行一个字节接着一个字节的比较操作,直到发现不相符合者或是到达文件的尾端为止.我们的程序代码会执行下列两项简单的检查,以便提高比较的效率: ◆如果传递给函数的两个文件引用是指向相同的文件,则这两个文件一定相同,也就不需要进一步比较文件的内容. ◆如果两个文件的大小不相同,则这两个文件的内容一定不相同,也就不需要进一步比较文件的内容. 图 1-34 图1-34所示的是程序范例CH1_DemoForm044cs的执行画面,它示范如何利用我们所编写的FileC

如何用CZip/CUnzip类压缩/解压缩文件

本文介绍如何用CZip/CUnzip类压缩/解压缩文件,这个类使用gzip GNU源代码(gzip-1.2.4a).这是个免费软件,在GUN通用公共许可证(General Public License)条款下可以分发及修改此软件,关于这个通用公共许可证的详细条款请参考: http://www.vckbase.com/vckbase/uniondocs/gungpl.htm 目标动态库输出两个类: CZip(用于压缩文件) CUnzip (用于解压缩文件) 首先用文件名建立CZip 或 CUnzi

c++-请问C++里面如何用类似next( )的方法调用文件的每一行数据

问题描述 请问C++里面如何用类似next( )的方法调用文件的每一行数据 我知道如何用 getline 读取每一行数据,但是,我现在想要先读完整个文件,然后在另外一个method中通过类似next( ) 的方法把那个文件中的下一行调用出来 比如说,我现在有一个文件有1000行,每行两个数字.我想在一个update( )方法中每次调用下一行的数据(只调用一行),但是这个文件本身在另外一个 method中读取(因为如果也在update( )中读取的话每次就重新来过了),请问这个如何实现呢? 解决方

qt-求sys/ioctl.h和sys/select.h两个头文件

问题描述 求sys/ioctl.h和sys/select.h两个头文件 4C 解决方案 sys/param.h 和 limits.h头文件说明转载------ #include sys/xxx.h 头文件linux下 sys/ioctl.h 作用 解决方案二: 这2个头文件都是 mingwinclude 目录下的标准的c库头文件.想必这个代码肯定是linux下的而楼主现在的QT一定是在WINDOWS下的吧以下是LINUX下的QT:(完全OK)解决方法:windows DDK里面貌似有

windows-如何用Java扫描Windows下的文件夹?

问题描述 如何用Java扫描Windows下的文件夹? 如何用Java扫描Windows下的文件夹以及文件夹下面的文件 解决方案 import java.io.File;/** * *自动扫描文件夹下的文件 *用途:自动扫描脚本输入路径,输出要执行的sql导入数据库: */public class OutSql { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method

PHP函数计算两个文件的相对路径

  新浪有个面试题目:写一个php函数算出两个文件的相对路径 ?php //计算出 c.php相对于e.php的相对路径应该是../../12/34 $a = /a/b/c/d/e.php; $b = /a/b/12/34/c.php; getpathinfo($a, $b); function getpathinfo( $a, $b ) { $a 新浪有个面试题目:写一个php函数算出两个文件的相对路径 //计算出 c.php相对于e.php的相对路径应该是../../12/34 $a = '

php实现比较两个文件夹异同的方法

  本文实例讲述了php实现比较两个文件夹异同的方法.分享给大家供大家参考.具体分析如下: 要求: 只能使用命令行,比较两个文件夹的不同,包括文件的差异. 思考: 虽然linux下有diff....还是用php吧,代码改的方便,速度也很快,以下排除了.svn目录的比较 文件要比较md5校验和 思路: 1)把第一路径作为标准路径,列出第1个路径中有的,第2个路径中没有的文件或文件夹,或者是不同的文件. 2)然后,列出第2个路径中有的,第1个路径中却不存在的文件和文件夹. 调用示例: php com

Linux系统中使用cmp和comm命令来比较两个文件

  cmp cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息 -l 列出所有的不同信息 -s 错误信息不提示 选择参数 -i<字符数> 指定字符数目 -v 显示版本信息 --help 显示帮助信息 [函数的返回值] 0 :文件时同样的 1 :文件是不同的 >1:发生错误 例: 代码如下: [root@localhost www]# cmp test1.rb test.rb #比较二个文件的不同 test1