다른 디렉토리에 빠르고 더러운 복사 embed.FS
// CopyDir copies the contents of an embedded FS in your binary
// to some directory on disk.
// f is the //go:embed attribute
// origin is the name of the directory in the embed call
// target is the target directory to write into
func CopyDir(f embed.FS, origin, target string) error {
if _, err := os.Stat(target); os.IsNotExist(err) {
if err := os.MkdirAll(target, os.ModePerm); err != nil {
err = fmt.Errorf("error creating directory: %v", err)
return err
}
}
files, err := f.ReadDir(origin)
if err != nil {
err = fmt.Errorf("error reading directory: %v", err)
return err
}
for _, file := range files {
sourceFileName := filepath.Join(origin, file.Name())
destFileName := filepath.Join(target, file.Name())
if file.IsDir() {
if err := copyDir(f, sourceFileName, destFileName); err != nil {
err = fmt.Errorf("error copying subdirectory: %v", err)
return err
}
continue
}
fileContent, err := f.ReadFile(sourceFileName)
if err != nil {
err = fmt.Errorf("error reading file: %v", err)
return err
}
if err := os.WriteFile(destFileName, fileContent, 0644); err != nil { // nolint: gosec
log.Printf("error os.WriteFile error: %v", err)
err = fmt.Errorf("error writing file: %w", err)
return err
}
}
return nil
}
Reference
이 문제에 관하여(다른 디렉토리에 빠르고 더러운 복사 embed.FS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jcmuller/quick-and-dirty-copy-embedfs-to-another-directory-eck텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)