1 Star 0 Fork 0

anziguoer/demo-code

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
dirFile.go 2.03 KB
一键复制 编辑 原始数据 按行查看 历史
anziguoer 提交于 2023-11-13 11:38 +08:00 . {msg}
package main
import (
"fmt"
"log"
"os"
"strings"
)
type File struct {
Name string `json:"name"`
Path string `json:"path"`
IsDir bool `json:"is_dir"`
Child []File `json:"child"`
}
func getDirFiles(path string, deep bool) ([]File, error) {
var files []File
entries, err := os.ReadDir(path)
if err != nil {
return files, err
}
for _, dirEntity := range entries {
if dirEntity.Name() == ".git" || dirEntity.Name() == ".gitignore" || dirEntity.Name() == ".vscode" {
continue
}
var entity = File{
Name: dirEntity.Name(),
IsDir: dirEntity.IsDir(),
Path: path,
}
// 不获取字子目录以及文件
if deep {
if dirEntity.IsDir() {
child, _ := getDirFiles(fmt.Sprintf("%s/%s", path, dirEntity.Name()), deep)
entity.Child = append(entity.Child, child...)
}
}
files = append(files, entity)
}
return files, nil
}
// createDirAndFile 创建目录以及文件
func createDirAndFile(files []File, writeDir string) {
for _, v := range files {
filePath := fmt.Sprintf("%s/%s", v.Path, v.Name)
dir := strings.ReplaceAll(filePath, "/Users/oo7/Developer/demo-code/", "")
if v.IsDir {
// 如果是目录,创建目录,并获取目录下面的文件
makeDir := fmt.Sprintf("%s/%s", writeDir, dir)
if err := os.MkdirAll(makeDir, os.ModePerm); err != nil {
log.Fatalln(err)
return
}
fs, _ := getDirFiles(filePath, false)
createDirAndFile(fs, writeDir)
} else {
filename := fmt.Sprintf("%s/%s", writeDir, dir)
file, err := os.Create(filename)
if err != nil {
log.Fatalln(err)
return
}
defer file.Close()
// 读取远程文件的内容
data, err := os.ReadFile(filePath)
if err != nil {
log.Fatalln(err)
return
}
if _, err := file.Write(data); err != nil {
log.Fatalln(err)
return
}
}
}
}
func main() {
files, _ := getDirFiles("/Users/oo7/Developer/demo-code", false)
// rest, err := json.Marshal(files)
// if err != nil {
// log.Fatal(err)
// }
// fmt.Printf("%+v \n", string(rest))
createDirAndFile(files, "/tmp/111111")
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/anziguoer/demo-code.git
git@gitee.com:anziguoer/demo-code.git
anziguoer
demo-code
demo-code
golang

搜索帮助