7.1.获取操作系统用户信息
(1)os包及子包功能
- os/exec包,负责执行外部命令
- os/singal对输入信息的访问
- os/user通过名次或ID 查询用户账号
(2)在os/user中提供了User结构体,表示操作系统用户
- Uid用户id
- Gid所属组id
- Username用户名
- Name所属组名
- HomeDir用户对应文件夹路劲
(3)在os/user中的Group表示用户所属组
- Gid组的id
- Name组的名称
//Learn_Go/main.go package main import ( "fmt" "os/user" ) func main() { u,error := user.Current() //获取当前用户 if error != nil{ fmt.Println(error) return } fmt.Println(u.Uid) fmt.Println(u.Name) fmt.Println(u.Gid) fmt.Println(u.HomeDir) fmt.Println(u.Username) }
7.2.系统文件和目录
(1)Go语言标准库中提供了两种创建文件夹的方式
MkDir:要求文件夹不存在且父目录必须存在,才能创建
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.Mkdir("D:/godir", os.ModeDir) if err != nil{ fmt.Println("文件夹创建失败", err) return } fmt.Println("文件夹创建成功") }
MkDirAll:如果文件夹已经存在,不报错,保留原文件,如果父目录不存在帮助创建
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.MkdirAll("D:/godir/a/b", os.ModeDir) if err != nil{ fmt.Println("文件夹创建失败", err) return } fmt.Println("文件夹创建成功") }
(2)创建空文件
创建文件是要求文件目录必须已经存在
如果文件已经存在,则会创建一个空文件覆盖之前的文件
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { f , err := os.Create("D:/godir/test.txt") if err != nil{ fmt.Println("文件夹创建失败", err) return } fmt.Println("文件夹创建成功", f) }
(3)重命名文件或文件夹
第一个参数:原文件名称,要求此路径是必须存在的
第二个参数:新文件夹名称
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.Rename("D:/godir","D:/godir11") if err != nil{ fmt.Println("重命名失败", err) return } fmt.Println("重命名成功") }
重命名文件
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.Rename("D:/godir11/test.txt","D:/godir11/test11.txt") if err != nil{ fmt.Println("重命名失败", err) return } fmt.Println("重命名成功") }
(4)获取文件夹信息
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { f,err := os.Open("D:/godir11/test11.txt") if err != nil{ fmt.Println("文件获取失败", err) return } fileInfo,err := f.Stat() if err != nil{ fmt.Println("文件信息获取失败",err) return } fmt.Println(fileInfo.Size()) //文件大小 fmt.Println(fileInfo.ModTime()) //文件最后修改时间 fmt.Println(fileInfo.Mode()) //文件模式 -rw-rw-rw- fmt.Println(fileInfo.IsDir()) //是否是目录 false fmt.Println(fileInfo.Name()) //文件名 test11.txt }
(5)删除文件或文件夹
Remove:删除的内容只能是一个文件或空文件夹且必须存在
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.Remove("D:/godir11") if err != nil{ fmt.Println("删除失败", err) return } fmt.Println("删除成功") } //结果 删除失败 remove D:/godir11: The directory is not empty.
RemoveAll
- 只要文件夹存在,删除文件夹
- 无论文件是否有内容都会删除
- 如果是文件则删除文件
//Learn_Go/main.go package main import ( "fmt" "os" ) func main() { err := os.RemoveAll("D:/godir11") if err != nil{ fmt.Println("删除失败", err) return } fmt.Println("删除成功") } //结果 删除成功