目錄
背景
分析
背景
第一步:讀取文件,獲得file對象
第二步:獲取文件md5
第三步:獲取到md5后繼續(xù)使用(讀?。ゝile對象,發(fā)現(xiàn)一次就讀完了(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直接結束。
此時需要重新回溯指針到文件開始位置,然后才能繼續(xù)使用file讀取完整數(shù)據(jù)。
即在獲得md5之后、接著讀取之前增加:文章來源:http://www.zghlxwxcb.cn/news/detail-803622.html
file.Seek(0, 0)
?? ?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-803622.html
到了這里,關于go獲取文件md5后接著讀取file對象EOF的問題記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!