好的。我的问题的不同方面已在该论坛上被多次询问和回答。但是,我认为从来没有人问过我对这个问题的特殊变体。所以,就这样吧。我正在尝试为同一个文本文件生成两个哈希值,以便比较数据文件在处理之前和处理之后的情况。这一点疯狂的目的是验证整个文件是否已被程序读取和处理。
我已经向自己证明,使用字节和数组将文件分成大块,然后使用 MD5.TransformBlock 将创建一个具有值(value)(该程序代码遍布网络)。而且,当我运行我的程序时,两个哈希值是相同的。但是,我正在使用 StreamReader 的 readline() 方法一次一行地读取文本文件,这会生成不正确的哈希值。
伪代码是:
BufferedStream reader = OpenFile(file)
string initialMd5 = generateMd5FromBufferedStream(reader)
//Start from the beginning again
reader.setposition = 0
reader.DiscardBufferedData();
while((tmpLine = reader.readline()) != null ) {
Byte() buffer = GetBytes(tmpLine);
md5.TransformBlock(buffer, 0, buffer.length, 0)
}
md5.TransformFinal(buffer, 0, 0);
String finalMd5 = ConvertToString(md5.Hash());
有什么想法吗?我对如何解决这个问题的想法已经用完了。
提前致谢!
最佳答案
这不是所发布问题的答案,但检查文件的上次访问或修改日期是否足以检测更改? .Net 在 System.IO 命名空间中有一个 FileInfo 类,它具有 LastAccessTime 和 LastWriteTime 的属性。
关于c# - 使用 StreamReader 和 Readline() 为文件生成 MD5 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136307/