我正在使用iTextSharp从PDF文件中读取文本.但是,有时我无法提取文本,因为PDF文件只包含图像.我每天都下载相同的PDF文件,我想查看PDF是否已被修改.如果无法获得文本和修改日期,MD5校验和是否是判断文件是否已更改的最可靠方法?
如果是的话,一些代码样本会受到赞赏,因为我对密码学没有多少经验.
我遇到了将数据从a复制MemoryStream到Stream内部的问题ZipArchive.以下不起作用 - 它只返回114个字节:
GetDataAsByteArray(IDataSource dataSource)
{
using (var zipStream = new MemoryStream())
{
using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
var file = archive.CreateEntry("compressed.file");
using (var targetStream = file.Open())
{
using (var sourceStream = new MemoryStream())
{
await dataSource.LoadIntoStream(sourceStream);
sourceStream.CopyTo(targetStream);
}
}
}
var result = zipStream.ToArray();
zipStream.Close();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用下面的实现"copy"-process,所有1103个字节都写入数组/内存流:
await targetStream.WriteAsync(sourceStream.ToArray(), 0, (int) sourceStream.Length);
Run Code Online (Sandbox Code Playgroud)
我想知道为什么CopyTo产量减去字节数.另外,我Int32对第二个实现中的强制转换感到不安全.
仅供参考:比较字节数组:看起来只有zip文件的页眉和页脚是由第一个实现编写的.
我目前正在上载Azure Blob存储上的媒体。一切正常,除非当我尝试将上传媒体的MD5哈希与本地文件(与上传的文件完全相同)时。本地文件返回一个字节数组,其中blob.Properties.ContentMD5返回一个字符串,并且两者都不匹配。
本地MD5哈希: sÔ(F¦“” Db〜[N
blob.Properties.ContentMD5: c9QoHkamgiKTRANifltOGQ ==
有什么办法可以匹配这两个?
我需要知道两个文件是否相同.起初我比较了文件大小和创建时间戳,但这不够可靠.我已经提出了以下代码,这似乎有效,但我希望有人能够更好,更容易或更快地完成这项工作.
基本上我正在做的是将文件内容流式传输到字节数组,并通过System.Security.Cryptography比较它们的MD5哈希值.
在此之前,我做了一些简单的检查,因为没有理由读取文件,如果两个文件路径相同,或者其中一个文件不存在.
Public Function CompareFiles(ByVal file1FullPath As String, ByVal file2FullPath As String) As Boolean
If Not File.Exists(file1FullPath) Or Not File.Exists(file2FullPath) Then
'One or both of the files does not exist.
Return False
End If
If String.Compare(file1FullPath, file2FullPath, True) = 0 Then
' fileFullPath1 and fileFullPath2 points to the same file...
Return True
End If
Dim MD5Crypto As New MD5CryptoServiceProvider()
Dim textEncoding As New System.Text.ASCIIEncoding()
Dim fileBytes1() As Byte, fileBytes2() As Byte
Dim fileContents1, fileContents2 As String
Dim streamReader As …Run Code Online (Sandbox Code Playgroud) c# ×3
hash ×2
md5 ×2
.net ×1
azure ×1
comparison ×1
filestream ×1
memorystream ×1
stream ×1
vb.net ×1
zip ×1