리팩토링
This commit is contained in:
49
internal/copy/copy.go
Normal file
49
internal/copy/copy.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package copy
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
// CopyFile 복사 함수: srcFile → dstFile
|
||||
func RunCopy(srcFile, dstFile string) error {
|
||||
src, err := os.Open(srcFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer func(src *os.File) {
|
||||
err := src.Close()
|
||||
if err != nil {
|
||||
|
||||
}
|
||||
}(src)
|
||||
|
||||
dst, err := os.Create(dstFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer func(dst *os.File) {
|
||||
err := dst.Close()
|
||||
if err != nil {
|
||||
|
||||
}
|
||||
}(dst)
|
||||
|
||||
_, err = io.Copy(dst, src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 원본 파일의 권한을 복사
|
||||
info, err := os.Stat(srcFile)
|
||||
if err == nil {
|
||||
err := os.Chmod(dstFile, info.Mode())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user