Skip to content

Instantly share code, notes, and snippets.

@petergtz
Last active June 19, 2017 10:35
Show Gist options
  • Save petergtz/7a2450f447b1836a20aa6ebcb55de641 to your computer and use it in GitHub Desktop.
Save petergtz/7a2450f447b1836a20aa6ebcb55de641 to your computer and use it in GitHub Desktop.
func CopyFile(dstName, srcName string) (int64, error) {
src, e := os.Open(srcName)
if e != nil {
return 0, errors.New("Error while opening file for reading. Caused by: " + e.Error())
}
var safeSrcCloser multicloser.SafeCloser
defer safeSrcCloser.Close(src)
dst, e := os.Create(dstName)
if e != nil {
return 0, errors.New("Error while opening file for writing. Caused by: " + e.Error())
}
var safeDstCloser multicloser.SafeCloser
defer safeDstCloser.Close(dst)
numBytesWritten, e := io.Copy(dst, src)
if e != nil {
return numBytesWritten, errors.New("Error while copying. Caused by: " + e.Error())
}
e = safeDstCloser.Close(dst)
if e != nil {
return numBytesWritten, errors.New("Error while closing dst. Caused by: " + e.Error())
}
e = safeSrcCloser.Close(src)
if e != nil {
return numBytesWritten, errors.New("Error while closing src. Caused by: " + e.Error())
}
return numBytesWritten, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment