Golang io.TeeReader function example

package io

Golang io.TeeReader function usage example

 package main

 import (
 "crypto/md5"
 "fmt"
 "io"
 "os"
 )

 func main() {
 // open files r and w
 r, err := os.Open("input.txt")
 if err != nil {
 panic(err)
 }
 defer r.Close()

 w, err := os.Create("output.txt")
 if err != nil {
 panic(err)
 }
 defer w.Close()

 // we want to copy the file
 // and at the same time create a MD5 checksum

 hash := md5.New()

 n, err := io.Copy(w, io.TeeReader(r, hash)) // <------ here !

 if err != nil {
 panic(err)
 }

 // the end result ?
 // kill 2 birds with 1 stone thanks to io.TeeReader()
 fmt.Printf("Copied %v bytes with checksum %x \n", n, hash.Sum(nil))
 }

Sample output :

Copied 17 bytes with checksum 5af1ca1d92340d72a29c194d3f4096e0

References :

https://www.socketloop.com/tutorials/golang-generate-md5-checksum-of-a-file

Advertisement