目录
背景
分析
背景
第一步:读取文件,获得file对象
第二步:获取文件md5
第三步:获取到md5后继续使用(读取)file对象,发现一次就读完了(EOF),但实际一次不可能读完
分析
代码如下:
md5hash := md5.New()
// md5hash可以作为io.Writer使用
totalSize, err := io.Copy(md5hash, file) // file 为*os.File类型,即读取文件后的文件对象
if err != nil {
return err
}
md5Str := fmt.Sprintf("%x", md5hash.Sum(nil))
for {
n, err := reader.Read(buf)
// 读取完成
if n == 0 && err == io.EOF {
break
}
// ...处理本次读取结果
}
如上代码中,在获得该文件的md5后,file对象此时已指向文件末尾,因此接着读取必然是EOF直接结束。
此时需要重新回溯指针到文件开始位置,然后才能继续使用file读取完整数据。
即在获得md5之后、接着读取之前增加:文章来源:https://www.toymoban.com/news/detail-803622.html
file.Seek(0, 0)
文章来源地址https://www.toymoban.com/news/detail-803622.html
到了这里,关于go获取文件md5后接着读取file对象EOF的问题记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!