欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-24 13:58:17
7.1.获取操作系统用户信息 (1)os包及子包功能 os/exec包,负责执行外部命令 os/singal对输入信息的访问 os/user通过名次或ID 查询用户账号 (2)在os/user中提供了User结构体,表示操作系统用户 Uid用户id Gid所属组id Username用户名 Name ......

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

//结果
删除成功