go--os

申明:本文章参考于:https://segmentfault.com/a/1190000000376807

package main

import (
	"fmt"
	"reflect"
	"os"
)

//os.Getwd(),返回路径的字符串和error信息
func os_Getwd(){
	dir,err:=os.Getwd()
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println(dir) //F:\project
}

//os.Getenv(),获取系统的环境变量,输入	环境变量名称,返回字符串
func os_Getenv(){
	path:=os.Getenv("gopath")
	fmt.Println(path)  //C:\Go\bin;F:\project
}

//os.Getegid
func os_Getegid(){
	//调用者的group的id
	fmt.Println(os.Getegid()) //windows -1,linux 0
	//用户的id
	fmt.Println(os.Geteuid()) //windows -1,linux 0
	//调用者的gid的id
	fmt.Println(os.Getgid())  //windows -1,linux 0
	//调用者的组的进程id
	fmt.Println(os.Getppid()) //3760
	//调用者的数字用户id
	fmt.Println(os.Getuid()) // windows -1,linux 0
}

// os.Chdir()切换目录
func os_Chdir(){
	fmt.Println(os.Getwd()) //F:\project <nil>
	os.Chdir("D:")
	fmt.Println(os.Getwd()) //D:\ <nil>
}

// os.Chmod()改变文件的权限,返回值为error
func os_Chmod(){
	fileinfo,_:=os.Stat("F:\\project\\src\\day7\\file.txt")
	fmt.Println(fileinfo.Mode())  //-rw-rw-rw-
	err:= os.Chmod("F:\\project\\src\\day7\\file.txt",0777)
	if err!=nil{
		fmt.Println("文件权限修改失败,err=",err)
		return
	}
	fileinfo,_ = os.Stat("F:\\project\\src\\day7\\file.txt")
	fmt.Println(fileinfo.Mode()) //-rw-rw-rw-
}

// os.IsPathSeparator(),判断传入的参数(字符类型)是不是系统分隔符
func os_IsPathSeaparator(){
	fmt.Println(os.IsPathSeparator('/')) //true
	fmt.Println(os.IsPathSeparator('\\')) //true
}

// os.IsPermission(),判断是否具有权限
func os_IsPermission(){
	_,err:=os.Open("F:\\project\\src\\day7\\file.txt")
	if err!=nil{
		fmt.Println(os.IsPermission(err)) //true
	}
	fmt.Println(err) //true
}

// os.MKdir(),创建一个目录,接受两个参数,分别是名称和权限,返回一个error
func os_MKdir(){
	err:= os.Mkdir("F:\\project\\古明地盆",os.ModePerm)
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println("目录创建成功") //目录创建成功
}

// os.MKdirALL(),创建多级目录,接受两个参数,分别是名称和权限,返回一个error
func os_MKdirALL(){
	err:=os.MkdirAll("F:\\project\\古明地盆\\椎名真白",os.ModePerm)
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println("目录创建成功") //目录创建成功
}

// os.Remove(),删除创建的目录
func os_Remove(){
	err:=os.Remove("F:\\project\\古明地盆")
	if err!=nil{
		fmt.Println("err=",err) //err= remove F:\project\古明地盆: The directory is not empty.
		return
	}
	fmt.Println("目录删除成功")
}
//由于文件夹里还有层文件夹,所以删除失败

//os.RemoveALL(),递归删除文件夹
func os_RemoveALL()  {
	err:=os.RemoveAll("F:\\project\\古明地盆")
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println("目录删除成功")  //目录删除成功
}

// os.Rename(),修改文件名
func os_Rename(){
	err:=os.Rename("F:\\project\\椎名真白","F:\\project\\古明地盆")
	if err!=nil{
		if os.IsExist(err){
			fmt.Println("文件已经存在")
			return
		}
		fmt.Println("err=",err)
	}
}

//os.SameFile,检测两个文件是否相同
func os_SameFile(){
	f1,_:=os.Stat("F:\\project\\1")
	f2,_:=os.Stat("F:\\project\\2")
	if os.SameFile(f1,f2){
		fmt.Println("两个文件信息一样")
	}else {
		fmt.Println("两个文件信息不一样")
	}
}

//os.Create(),创建一个文件,具有两个返回值,一个是文件file的指针,一个是error
// 文件不存在则创建,存在则清空
func os_Create(){
	f,err:=os.Create("F:\\project\\src\\day7\\file.txt")
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	defer f.Close()
	fmt.Printf("f_type is %v",reflect.ValueOf(f).Type()) //f_type is *os.File
}

//os.OpenFile(),要指定文件权限和打开方式
// os.Create()底层调用了os.OpenFile()
func os_OpenFile(){
	f,err:=os.OpenFile("F:\\project\\src\\day7\\file.txt",os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println(f.Stat())
	//&{file.txt {32 {2807857846 30674841} {2807857846 30674841} {2350904508 30674842} 0 0} 1 {0 0}  3180914654 5046272 617 false} <nil>
}

//os.Open()打开文件,底层依旧是调用了os.OpenFile(),只不过文件权限变了
//依旧返回一个文件描述符(指针)和error
func os_Open(){
	f,err:=os.Open("F:\\project\\src\\day7\\file.txt")
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	defer f.Close()
	fmt.Println(f) //&{0xc042072780}
}

//os.Stat()获取文件的详细属性,类似于Python当中的os.stat(open("xxx","r",encoding="utf-8"))
func os_Stat(){
	f,_ := os.Stat("F:\\project\\src\\day7\\file.txt")
	fmt.Println(f.Size())//文件内容:古明地盆,所以是12
	// Name():文件的名称
	// Size():文件的大小
	// Mode():文件的权限
	// ModTime():时间
	// IsDir():是否是目录
}

//os.Fd()返回文件的句柄
func os_Fd(){
	f,_:=os.Open("F:\\project\\src\\day7\\file.txt")
	fmt.Println(f.Fd()) //236
}

//os.Pipe(),获取文件的读写指针
func os_Pipe(){
	r,w,_:= os.Pipe()
	fmt.Println(r,w) //&{0xc042006a00} &{0xc042006c80}
}

//os.NewFile,接收两个参数,第一个是文件的句柄,然后是文件名。这个函数并不是创建了一个文件,而是新建一个文件不保存,然后返回文件的指针
func os_NewFile(){
	f,_:=os.Open("F:\\project\\src\\day7\\file.txt")
	defer f.Close()
	f1:=os.NewFile(f.Fd(),"file.txt")
	fd,_:= f1.Stat()
	fmt.Println(fd.Mode()) //-rw-rw-rw-
	fmt.Println(fd.ModTime())//2018-06-29 19:45:55.1269518 +0800 CST
	fmt.Println(fd.Size())//12
}

  

猜你喜欢

转载自www.cnblogs.com/traditional/p/9245645.html