1、计算MD5工具
第一种方式(比较慢):
func main() {var path stringflag.StringVar(&path, "path", "", path)flag.Usage = func() {fmt.Println("usage:md5util --path path")}flag.Parse()//检查file, err := os.Open(path)if err != nil {fmt.Println(err)return}defer file.Close()hasher := md5.New()ctx := make([]byte, 1024)for {n, err := file.Read(ctx)if err != nil {if err != io.EOF {fmt.Println(err)}break}hasher.Write(ctx[:n])}fmt.Printf("%x\n", hasher.Sum(nil))}
第二种方式(快):
func main() {var path stringflag.StringVar(&path, "path", "", path)flag.Usage = func() {fmt.Println("usage:md5util --path path")}flag.Parse()readFile, err := ioutil.ReadFile(path)if err != nil {fmt.println(err)return}hasher := md5.New()hasher.Write(readFile)fmt.Printf("%x\n", hasher.Sum(nil))}
第三种(采用IO.COPY 快):
func main() {path:=flag.String("path","","path")flag.Usage = func() {fmt.Println("usage:md5util --path path")}flag.Parse()open, err := os.Open(*path)if err != nil {return}hasher := md5.New()io.Copy(hasher, open)fmt.Printf("%X\n", hasher.Sum(nil))}
2、复制文件
注意事项: 文件的检查 src 没输入 文件路径不存在 目录
dst 没输入 父目录不存在 => 自动创建父目录(创建失败/创建成功),报错 文件存在 目录
