go语言之操作目录
1.创建目录
os.Mkdir
package main
import(
"fmt"
"os"
)
func main() {
dir_name := `test-dir`
dir_name1 := `D:\test\test-dir1`
dir_name2 := `D:\test\test-dir2\subdir`
// 在当前目录创建一个权限为0777的 “test-dir” 目录。
// 结论:可以创建,但是目录已存在会报错
err := os.Mkdir(dir_name, 0777)
if err != nil {
fmt.Println(err)
}
// 在已存在的目录 "D:\test" 下创建一个权限为0777的 “test-dir1"目录。
// 结论: 可以创建,但是目录已存在会报错
err1 := os.Mkdir(dir_name1, 0777)
if err1 != nil{
fmt.Println(err1)
}
// 在已存在的目录 "D:\test" 下创建一个权限为0777的 “test-dir2\subdir"目录。
// 结论:不能创建多级子目录
err2 := os.Mkdir(dir_name2, 0777)
if err2 != nil{
fmt.Println(err2) // 报错: mkdir D:\test\test-dir2\subdir: The system cannot find the path specified.
}
}
os.MkdirAll
package main
import(
"fmt"
"os"
"time"
)
func main() {
dir_name := `all-dir`
dir_name1 := `D:\test\all-dir1`
dir_name2 := `D:\test\all-dir2\subdir`
// 在当前目录创建一个权限为0777的 “test-dir” 目录
// 结论:可以创建, 目录已存在也不会报错
err := os.MkdirAll(dir_name, 0777)
if err != nil {
fmt.Println(err)
}
// 在已存在的目录 "D:\test" 下创建一个权限为0777的 “test-dir1"目录。
// 结论: 可以创建,目录已存在也不会报错
err1 := os.MkdirAll(dir_name1, 0777)
if err1 != nil{
fmt.Println(err1)
}
// 在已存在的目录 "D:\test" 下创建一个权限为0777的 “test-dir2\subdir"目录。
// 结论:可以创建多级子目录,目录已存在也不会报错
err2 := os.MkdirAll(dir_name2, 0777)
if err2 != nil{
fmt.Println(err2)
}
// 实战, 创建文件上传目录
uploaddir := `D:\test\static\upload\` + time.Now().Format("2006-01-02")
err3 := os.MkdirAll(uploaddir, 0700)
if err3 != nil{
fmt.Println(err3)
}
}
重命名目录
os.Rename
package main
import(
"fmt"
"log"
"os"
)
func main(){
old_name := "dir_name1"
new_name := "dir_name2"
err := os.Mkdir(old_name, 0777)
if err != nil {
fmt.Println(err)
}
err1 := os.Rename(old_name, new_name)
if err != nil{
log.Fatal(err1)
}
}
删除目录
os.Remove
package main
import(
"fmt"
"os"
)
func main() {
dir_name := "del_dir"
dir_name2 := "del_dir2/test2"
err := os.MkdirAll(dir_name, 0755)
if err != nil {
fmt.Println(err)
}
// 结论:可以删除目录
err = os.Remove(dir_name)
if err != nil{
fmt.Println(err)
}
err = os.MkdirAll(dir_name2, 0755)
if err != nil {
fmt.Println(err)
}
// 报错:remove del_dir2: The directory is not empty.
// 结论:不能删除带有文件或文件夹的目录,只能删除空目录
err = os.Remove("del_dir2")
if err != nil{
fmt.Println(err)
}
}
os.RemoveAll
package main
import (
"log"
"os"
"time"
)
func main() {
dir_name := "dir_name/test/ok"
err := os.MkdirAll(dir_name, 0755)
if err != nil{
log.Fatal(err)
}
time.Sleep(5 * time.Second)
// 结论: RemoveAll可以删除带有数据的目录
err = os.RemoveAll("dir_name")
if err != nil{
log.Fatal(err)
}
}
本文来自博客园,作者:zhanghuiyan,转载请注明原文链接:https://www.cnblogs.com/zhanghuiyan/p/15080711.html

浙公网安备 33010602011771号