获取同目录下多文件Hash值
来源:互联网 发布:五十知天命六十耳顺 编辑:程序博客网 时间:2024/06/06 01:14
研究了文件hash了解了为什么文件名he大小都相同的同类型文件,hash不同,他们便是不同文件。计算文件hash:1.大文件hash 2.小文件hash
(1)小文件hash的计算方式比较简单:
func SmallFileHash(filepath string) { file, err := os.Open(filepath) if err != nil { fmt.Println(err) return } md5h := md5.New() io.Copy(md5h, file) fmt.Printf("%s checksum is %x\n", file.Name(),md5h.Sum([]byte("")))}
(2)大文件hash的计算方式也不难,会在下一个程序直接展示,这里先不放代码。
获取同目录下多文件Hash值源码:
===================== main.go ====================
package mainimport ( "crypto/md5" "fmt" "io" "io/ioutil" "math" "os" "strings")var ( FilePath = make(map[int]string) key int)func main() { MutilHash(`。。。文件目录 。。。`)}func MutilHash(path string) { ListFile(path) for _, filename := range FilePath { FileHash(path + filename) }}func ListFile(folder string) { files, _ := ioutil.ReadDir(folder) //specify the current dir for _, file := range files { if file.IsDir() { ListFile(folder + "/" + file.Name()) } else { if len(FilePath) == 0 { FilePath[key] = file.Name() } else { count := 0 for _, v := range FilePath { if !strings.EqualFold(file.Name(), v) { count += 1 } if count == len(FilePath) { FilePath[key] = file.Name() } } } } key += 1 }}func FileHash(filepath string) { const filechunk = 8192 // we settle for 8KB 大小可以调整 file, err := os.Open(filepath) if err != nil { panic(err.Error()) } defer file.Close() // calculate the file size info, _ := file.Stat() filesize := info.Size() blocks := uint64(math.Ceil(float64(filesize) / float64(filechunk))) hash := md5.New() for i := uint64(0); i < blocks; i++ { blocksize := int(math.Min(filechunk, float64(filesize-int64(i*filechunk)))) buf := make([]byte, blocksize) file.Read(buf) io.WriteString(hash, string(buf)) // append into the hash } fmt.Printf("%s checksum is %x\n", file.Name(), hash.Sum(nil))}
阅读全文
0 0
- 获取同目录下多文件Hash值
- linux下获取文件目录
- 遍历目录,获取目录下的文件
- getResource("somefilename")读取不到同目录下的文件?
- 将不同目录下的python文件作为module导入
- 用批处理编译运行同目录下的Java文件
- zend studio 打开在同目录下的项目文件
- Python实现批量执行同目录下的py文件
- 将不同目录下的文件,复制到同一个目录下。
- 使用递归获取网站下的所有同类型文件
- 递归获取网站下的所有同类型文件
- 获取文件的Hash值代码实现
- 获取文件HASH算法
- python引用与上级目录同目录文件夹下的文件方法
- C++获取目录下的文件列表
- java获取指定目录下所有文件
- 获取当前目录下的所有文件
- 获取一个目录下的所有文件
- tomcat换端口命令
- 自动化脚本腾讯云配置集群(四)自动化安装从节点的JDK+Hadoop
- 暑假集训 and 省赛总结
- 基于SpringBoot,SpringSession和redis的会话共享
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 获取同目录下多文件Hash值
- Java面试复习(四)
- poj3278 Catch That Cow
- js中的Date对象
- Linux初窥:软件包管理之(yum与源码包安装)
- zhihu-spider开源项目使用技术详
- asp.net图片上传
- Android 穿过点画平滑曲线
- codevs1214 线段覆盖(贪心,区间型)