首页 > 编程知识 正文

批量读取和导出dji,djigo剪辑后无法保存

时间:2023-05-05 09:38:13 阅读:134604 作者:4053

首先,在计算文件的哈希值时,通常先读取文件,然后将文件数据写入hash writer。 但是,如果需要导出文件来计算散列值,请自定义hash writer以快速导出和计算散列值。

HashWriter导出文件,计算哈希值(MD5、SHA1、SHA256 ),并简单地封装计算哈希值的HashWriter。

如下所示。

packagehashimport (' crypto/MD5 ' ' crypto/sha1 ' ' crypto/sha 256 ' ' fmt ' ' hash ' ' sync ' )/# region HashWriter在channel中进行各散列的计算typehashwriterstruct { m d5w hash.hash m D5 chan chan [ ] bytes h a1w hash.hashalchan [ ] bytetes byteonceclose * sync.once//WG * sync.wait group } funcnewhashwriter (usemdwriter )只关闭一次usesha256bool(* hashwriter(writer:=new ) hashwriter ) writer.onceclose=new(sync.once ) writer.WG=new ) sync.once (WG ) riter.md5w=MD5.new (writer.m D5 chan=make ) chan[]byte, chancount (go writer.write MD5 (} ifusesha1) hashcountwriter.sha1w=sha1.new ) (writer.sha1chan=make ) ) chan[] Chancount(goWriter.writesha1 ) (ifusesha256 ) hashcountwriter.sha 256 w=sha 256.new ) (Writer.sha256chan=make ) ) a256 ) ) Writer.WG.add ) Hashcount ) ReturnWriter ) func ) this*HashWriter ) writeMd5 ) ) chanCount ) writeshwriter 65 TTT func ) this*hashwriter ) writeSha1 ) {Dowritehash ) } this.sha1 chan (fmt.println (sha1 exit ) this.WG.done } funf this.sha256chan(fmt.println ) sha 256 exit (this.WG.done ) } funcdowritehash (writer hash.hash、 inchan ) ) ban open { return } writer.write (buf ) }}func ) this*hashwriter ) write ) buf[]byte )//此通道传递=nil { this.sha1 chan-tmpbuf } if this.sha 256 chan!=nil { this.sha 256 chan-tmpbuf } func (this * hash writer ) Close () this.onceclose.do ) func ) if this.md5cc=nil=nil{close(this.sha1chan ) }if this.sha256Chan!=nil{close(this.sha256chan ) } ) func ) this*hashwriter ) sum ) b ) byte ) mD5sum ) byte,sha1sum ) ) byte=nil=nil{sha1sum=this.sha1w.sum(b ) }if this.sha256W!=nil { sha256sum=this.sha 256 w.sum (b ) }return}//#endregion使用:

packagemainimport(fmt(io ) OS ) time ) (func main ),err:=OS.open ) f: ) testtest.DD ) )。=nil{fmt.println(err ) return ) start:=time.now ) (defer func ) }{fmt.println ) HashWriter )需要一些时间。 ',time.Now ().sub(start ) ) HW :=newhashwriter (true,false,true ) defer hw.Close ) ) b:=make ()=读取=nil(fmt.println ) )文件错误:',err ) return ) HW.write ) b [ : n ] } m D5 buf、sha1Buf、sha 256 buf 3360=

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。