申明:本文章参考于: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 }