gpt4 book ai didi

c# - 获取两个文件的差异

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:11 24 4
gpt4 key购买 nike

在 .NET 中,我需要一种方法来比较两个文件。我想到了一个类,它代表了一个差异:

public enum DiffEntryState
{
New,
Removed,
Changed
}
public class DiffEntry
{
public byte[] Bytes;
public long FileOffset;
public DiffEntryState State = BackupByteEntryState.Changed;
}

名称应该是不言自明的。我想为每个条目添加一个状态,这样我就可以区分第一个文件大于第二个文件还是第一个文件大于第二个文件的情况。

我想知道是否有一种通用且快速的方法来检索两个文件的逐字节差异。我会简单地为每个文件创建一个流并比较这些流的 block 直到一个结束。有没有更好的方法,或者框架有内置的解决方案?请记住,我需要差异本身,而不仅仅是存在差异的反馈。

//编辑:

在为这个问题睡了一夜之后,我想我在这里采取了错误的方法。整个工具是一个备份解决方案,它将能够只保存更改的字节,从而减少备份所需的整体空间。不是每次都保存一个压缩的 14 MB 文件,而是只会保存 200k 或更少。

但是,在思考这个问题之后,我意识到仅仅逐个字节地保存差异是不够的。以一段文字为例:

“这是一个字符串。”“这是一个字符串。”

事实上,这里唯一的变化是"is"到"is"。但是我的方法假设更改的内容现在“是一个字符串”。如果这种情况发生在一个大文件的开头,那么这种方法就没用了。显然,我需要一种方法来索引文件并检测与原始文件相比所有移动、复制或更改的 block 。呸……

最佳答案

看看Diff.NET , 可能会有帮助。

关于c# - 获取两个文件的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com