在 VBA 和文件哈希中读取二进制 2GB +文件

MICROSOFT 类的方法

方法名称 描述
开了 返回一个布尔值,指示文件是否已打开。
OpenFilesFileNam e As String) 打开 sFileName 参数指定的文件。
CloseFile 关闭当前打开的文件。
ReadBytesByteCount As Long) 读取 ByteCount 字节并在 Variant 字节数组中返回它们并移动指针。
WriteBytesDataBytes() As Byte) 将字节数组的内容写入文件中的当前位置并移动指针。
红晕 强制 Windows 刷新写入缓存。
SeekAbsoluteHighPos As Long, LowPos As Long) 将文件指针移动到文件开头的指定位置。虽然 VBA 将 DWORDS 视为有符号值,但 API 会将它们视为无符号。使高阶参数非零超过 4GB。对于 2GB 到 4GB 之间的值,低位 DWORD 将为负。
SeekRelative偏移为长) 将文件指针从当前位置移动到+/- 2GB。你可以通过将 64 位有符号偏移转换为两个 32 位值来重写此方法以允许大于 2GB 的偏移。

MICROSOFT 的类特性

属性 描述
文件句柄 当前打开文件的文件句柄。这与 VBA 文件句柄不兼容。
文件名 当前打开的文件的名称。
自动刷新 设置/指示 WriteBytes 是否会自动调用 Flush 方法。

普通模块

功能 笔记
GetFileHashsFile 为 String, uBlockSize 为 Double, sHashType 为 String) 只需要输入要散列的完整路径,要使用的 Blocksize(字节数),以及要使用的散列类型 - 私有常量之一: HashTypeMD5HashTypeSHA1HashTypeSHA256HashTypeSHA384HashTypeSHA512 。这被设计为尽可能通用。

你应该相应地取消/评论 uFileSize As Double 。我测试了 MD5 和 SHA1。