github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/fileutils/iocopy.go (about) 1 package fileutils 2 3 import ( 4 "io" 5 "os" 6 "runtime" 7 ) 8 9 func CopyFile(dst, src string) error { 10 in, err := os.Open(src) 11 if err != nil { 12 return err 13 } 14 defer in.Close() 15 16 out, err := os.Create(dst) 17 if err != nil { 18 return err 19 } 20 21 _, err = io.Copy(out, in) 22 if err != nil { 23 return err 24 } 25 26 err = out.Close() 27 if err != nil { 28 return err 29 } 30 31 fileInfo, err := os.Stat(src) 32 if err != nil { 33 return err 34 } 35 36 if runtime.GOOS != "windows" { 37 err = os.Chmod(dst, fileInfo.Mode()) 38 if err != nil { 39 return err 40 } 41 } 42 43 return nil 44 }