如何计算本地文件的md5值?
计算文件的 md5 值,读取数据字节,然后计算 md5。逻辑上是这样的,但是一次性把文件读入,文件小还可以,文件大是不太现实的,而本地文件通常都有相当的大小。所以要分批读入并计算。
以下是使用分批读入计算的。
其中关于 md5 的计算,使用了 CryptoSwift 第三方库
func localFileMd5(file:URL) -> String {
var result = ""
let bufferSize = 1024 * 1024
do {
var digest = MD5()
let file = try FileHandle(forReadingFrom: file)
defer {
file.closeFile()
}
while autoreleasepool(invoking: {
let data = file.readData(ofLength: bufferSize)
do {
_ = try digest.update(withBytes: data.bytes)
} catch {
AppLog.error(error)
return false
}
return data.count > 0
}) {}
let res = try digest.finish()
result = res.toHexString()
} catch {
AppLog.error(error)
}
AppLog.debug("local md5:\(result)")
return result
}
网友评论