Created
October 30, 2018 00:02
-
-
Save brydavis/a0cd1db30c8b84e8594a81b14dba7174 to your computer and use it in GitHub Desktop.
Revisions
-
brydavis created this gist
Oct 30, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,42 @@ package main import ( "bytes" "crypto/md5" "encoding/hex" "fmt" "io" "io/ioutil" "os" ) func main() { sourceFile, _ := os.Open("source/ebook.pdf") process := func(sourceReader io.Reader) { targetFile, _ := os.Create("target/ebook.pdf") defer targetFile.Close() var buf1, buf2 bytes.Buffer w := io.MultiWriter(targetFile, &buf1, &buf2) if _, err := io.Copy(w, sourceReader); err != nil { fmt.Println(err) } fmt.Println(checksum(&buf1)) fmt.Println(checksum(&buf2)) } process(sourceFile) } func checksum(buf *bytes.Buffer) string { h := md5.New() b, _ := ioutil.ReadAll(buf) if _, err := h.Write(b); err != nil { fmt.Println(err) } return hex.EncodeToString(h.Sum(nil)[:16]) } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,38 @@ package main import ( "bytes" "crypto/md5" "encoding/hex" "fmt" "io" "io/ioutil" "os" ) func main() { sourceFile, _ := os.Open("source/ebook.pdf") var buf bytes.Buffer tee := io.TeeReader(sourceFile, &buf) process := func(sourceReader io.Reader) { targetFile, _ := os.Create("target/ebook.pdf") defer targetFile.Close() if _, err := io.Copy(targetFile, sourceReader); err != nil { fmt.Println(err) } } process(tee) fmt.Println(checksum(&buf)) } func checksum(buf *bytes.Buffer) string { h := md5.New() b, _ := ioutil.ReadAll(buf) if _, err := h.Write(b); err != nil { fmt.Println(err) } return hex.EncodeToString(h.Sum(nil)[:16]) }