• 7.Go-用户信息和系统文件/目录


    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("删除成功")
    }
    
    //结果
    删除成功
    

      

  • 相关阅读:
    怎样提高js的编程能力
    如何提升自己
    利用nginx做反向代理解决前端跨域问题
    vue项目中使用组件化开发
    vue中refs的使用
    vue项目使用keep-alive的作用
    hadoop安装、使用过程的异常汇总
    CSS选择器优先级总结
    为什么CSS选择器是从右往左解析
    MySql中游标的定义与使用方式
  • 原文地址:https://www.cnblogs.com/derek1184405959/p/11331636.html
Copyright © 2020-2023  润新知