From fc61b5364382bb75951b463fe71e7ca297e2ae8b Mon Sep 17 00:00:00 2001 From: dennis Date: Fri, 8 Sep 2023 20:49:39 +0800 Subject: [PATCH] Add: FileUtils --- FileUtils.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 FileUtils.go diff --git a/FileUtils.go b/FileUtils.go new file mode 100644 index 0000000..d075769 --- /dev/null +++ b/FileUtils.go @@ -0,0 +1,53 @@ +package golanghelper + +import ( + "errors" + "fmt" + "io" + "os" +) + +type FileUtils struct { +} + +func (f *FileUtils) CopyFile(srcFilePath, destFilePath string, isOverwrite bool) (err error) { + var srcFileInfo os.FileInfo + srcFileInfo, err = os.Stat(srcFilePath) + if err != nil { + return + } + if !srcFileInfo.Mode().IsRegular() { + return errors.New(fmt.Sprintf("%s is not a regular file", srcFileInfo.Name())) + } + + var isNotExist bool + _, err = os.Stat(destFilePath) + if err != nil { + if os.IsNotExist(err) { + isNotExist = true + } else { + return + } + } + + var destFile *os.File + if isNotExist == false && isOverwrite == false { + return errors.New("File already exists") + } + + destFile, err = os.Create(destFilePath) + if err != nil { + return + } + defer destFile.Close() + + sourceFile, err := os.Open(srcFilePath) + if err != nil { + return + } + defer sourceFile.Close() + + _, err = io.Copy(destFile, sourceFile) + + return +}