golang 文件 文件夹 创建 读取 移动 复制 写入 遍历 系统管理员 2021-09-02 10:25 714阅读 0赞 **目录** 文件读取 创建 写入 移动 拷贝 删除 文件 创建文件夹 文件覆盖判断 遍历文件夹 权限 -------------------- 文件操作, 大体分为两部分: os库 : 文件\\文件夹创建,读取,移动,复制 io库 : 文件内容的写入,修改,拼接 ### 文件读取 ### package main import ( "io/ioutil" "log" ) func main() { // 读取文件内容 file, _ := os.OpenFile("./demo_unicode.html", 2, 0666) fileByte1, _ = ioutil.ReadAll(file); // 读取文件内容,更简易的方法 fileByte2, _ := ioutil.ReadFile("./demo_unicode.html") // byte转string fileString := string(fileByte2) log.Println(fileString) } ### 创建 写入 移动 拷贝 删除 文件 创建文件夹 ### package main import ( "io" "os" ) func main() { // 设定工作路径, 一般在项目刚开始设定一次即可, 不要在异步过程中修改工作路径 // 默认是程序执行的路径 os.Chdir("./") // 创建文件夹 os.MkdirAll("./aa/bb/c1", 0777) os.MkdirAll("./aa/bb/c2", 0777) // 创建文件 os.Create("./aa/bb/c1/file.go") // 移动文件 os.Rename("./aa/bb/c1/file.go", "./aa/bb/c2/file.go") // 打开文件,得到一个 *File 对象, 用于后续的写入 file, _ := os.OpenFile("./aa/bb/c2/file.go", 2, 0666) // 写入文件内容 io.WriteString(file, ` package main func main(){ log.Println("我是由程序写入的代码") } `) // 也可以直接调用file里的函数写入内容 file.WriteString("add string") // 拷贝文件, 拷贝其实就是创建一个文件, 然后写入文件内容 src1, _ := os.Create("./aa/bb/c1/file-copy1.go") io.Copy(file, src1) // 把文件file, 写入src1文件 // 删除文件或文件夹 os.Create("./aa/bb/c1/file-delete.go") // 创建一个文件用于删除 os.RemoveAll("./aa/bb/c1/file-delete.go") } ### 文件覆盖判断 ### os.IsNotExist 当文件已存在时, 不管是`os.Rename()`, `os.Create()`, 还是`io.WriteString()` 都会对已存在的文件进行覆盖\\修改, 如果需要安全的执行, 可以使用 `os.Stat()` 配合 `os.IsNotExist()` 做判断 package main import ( "io" "os" ) func main() { os.MkdirAll("aa", 0777) // 创建了文件 testA, 并且写入了内容 testA, _ := os.Create("aa/testA") io.WriteString(testA, "the teatA") // 如果需要安全判断, 可以使用 os.Stat 配合 os.IsNotExist if _, err := os.Stat("aa/testA"); os.IsNotExist(err) { // 当文件不存在, 才执行创建 os.Create("aa/testA") } os.Chmod("aa/testA", 0777) } ### 遍历文件夹 ### 遍历文件夹可以使用 ioutil库 的ioutil.ReadDir, 会得到一个数组, 数组元素有文件的属性, package main import ( "io/ioutil" "log" ) func main() { fs, _ := ioutil.ReadDir("aa") for _, v := range fs { // 遍历得到文件名 log.Println(v.Name()) log.Println(v.IsDir()) } } ### 权限 ### 可以使用 `os.Chmod()` 修改文件权限 // 所有人可读写权限 os.Chmod("aa/testA", 0666) ![52fc693bc4dba46f233e54dd68bc4ea6.png][] // 只读权限 os.Chmod("aa/testA", 0400) ![0923ed4bb476462e05e7d31bcd7fcf9a.png][] Linux权限参考: -rw------- (600) 只有拥有者有读写权限。 -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。 -rwx------ (700) 只有拥有者有读、写、执行权限。 -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 -rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。 -rw-rw-rw- (666) 所有用户都有文件读、写权限。 -rwxrwxrwx (777) 所有用户都有读、写、执行权限。 [52fc693bc4dba46f233e54dd68bc4ea6.png]: /images/20210728/4bf92d5360ed4e8897cdca7b3274274a.png [0923ed4bb476462e05e7d31bcd7fcf9a.png]: /images/20210728/9f6a25174d624f85b6536887a3ab2f59.png
还没有评论,来说两句吧...