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  }