1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package hybridBackup
- import (
- "errors"
- "io"
- "os"
- )
- func BufferedLargeFileCopy(src string, dst string, BUFFERSIZE int64) error {
- sourceFileStat, err := os.Stat(src)
- if err != nil {
- return err
- }
- if !sourceFileStat.Mode().IsRegular() {
- return errors.New("Invalid file source")
- }
- source, err := os.Open(src)
- if err != nil {
- return err
- }
- destination, err := os.Create(dst)
- if err != nil {
- return err
- }
- buf := make([]byte, BUFFERSIZE)
- for {
- n, err := source.Read(buf)
- if err != nil && err != io.EOF {
- source.Close()
- destination.Close()
- return err
- }
- if n == 0 {
- source.Close()
- destination.Close()
- break
- }
- if _, err := destination.Write(buf[:n]); err != nil {
- source.Close()
- destination.Close()
- return err
- }
- }
- return nil
- }
|