os,系统包。
一、环境变量
1.获取所有环境变量, 返回变量列表:os.Environ()
envs := os.Environ() for _, env := range envs { cache := strings.Split(env, "=") fmt.Println(cache) //[USER root]、[HOSTNAME localhost.localdomain] }
2.获取指定环境变量:os.Getenv()
fmt.Println(os.Getenv("GOPATH"))
3.设置环境变量:
os.Setenv
if err := os.Setenv("GOPATH", "./GO/bin"); err != nil { fmt.Println(err) }
4.获取主机名称
fmt.Println(os.Hostname())
二、退出系统
os.Exit(code int)
三、文件内容操作
注意:如果新建文件、打开文件等文件操作,文件名称没有带路径,则需要线进入指定目录
// 进入桌面目录 os.Chdir("/Users/xujie/Desktop")
1.新建文件:os.Create(文件名称)
file,error := os.Create("file.txt") if error != nil{ fmt.Println(error) }
2.打开文件:文件对象=os.Open(文件名称,打开模式,权限)
file,error:= os.Open("file.txt") if error != nil { fmt.Println(error) }
第二个参数
O_RDONLY 打开只读文件
O_WRONLY 打开只写文件
O_RDWR 打开既可以读取又可以写入文件
O_APPEND 写入文件时将数据追加到文件尾部
O_CREATE 如果文件不存在,则创建一个新的文件
O_EXCL 文件必须不存在,然后会创建一个新的文件
O_SYNC 打开同步I/0
O_TRUNC 文件打开时可以截断
第三个参数,如0666
3.写入文件:文件对象.Write(...),文件对象.WriteAt(...),文件对象.WriteString(string)
func (f *File) Write(b []byte) (n int, err error) func (f *File) WriteAt(b []byte, off int64) (n int, err error) func (f *File) WriteString(s string) (n int, err error)
func main() { // 进入桌面目录 os.Chdir("/Users/xujie/Desktop") // 创建一个文件夹 file,error:= os.OpenFile("file.txt",os.O_RDWR,0666) defer file.Close() if error != nil { fmt.Println(error) } _,error = file.WriteString("你好") _,error = file.WriteString("从天有一个书") fmt.Println(error) }
上面完成了文件的写入,我们发现文件原来的内容已经被替换掉了。
如果我们只想向文件中追加部分内容该如何实现?
func main() { // 进入桌面目录 os.Chdir("/Users/xujie/Desktop") // 创建一个文件夹 file,error:= os.OpenFile("file.txt",os.O_RDWR|os.O_APPEND,0666) defer file.Close() if error != nil { fmt.Println(error) } _,error = file.WriteString("\n---酷走天涯") fmt.Println(error) }
4.读取文件:文件对象.Read(data)
func main() { // 进入桌面目录 os.Chdir("/Users/xujie/Desktop") file,error:= os.Open("file.txt") defer file.Close() if error != nil { fmt.Println(error) return } fileInfo,_ := file.Stat() fmt.Println(fileInfo.Size()) // 创建缓冲区 data := make([]byte,fileInfo.Size()) // 一次性读取所有内容到缓冲区中 _,error = file.Read(data) fmt.Println(error) fmt.Println(string(data)) }
那么如何多次读取文件里面的内容呢
func main() { // 进入桌面目录 os.Chdir("/Users/xujie/Desktop") file,error:= os.Open("file.txt") defer file.Close() if error != nil { fmt.Println(error) return } fileInfo,_ := file.Stat() fmt.Println(fileInfo.Size()) // 创建缓冲区 var max = 3 var offset int64 = 0 data := make([]byte,max) // 多次读取缓冲区内容 for { _,error = file.ReadAt(data,offset) if error != nil { fmt.Println(error) break; } offset += 3 fmt.Println(string(data)) }
5.关闭文件:文件对象.Close()
6.删除文件或文件夹
error := os.Remove("/Users/xujie/Desktop/file.txt")
四、文件状态等操作
1.修改文件权限:文件对象.Chmod(权限)
func main() { file,_:= os.OpenFile("/Users/xujie/Desktop/file.txt",os.O_RDWR|os.O_APPEND,777) fileInfo,_ := file.Stat() fmt.Println(fileInfo.Mode()) err := file.Chmod(0444) if err != nil{ fmt.Println(err) } fileInfo,_ = file.Stat() fmt.Println(fileInfo.Mode()) }
2.获取文件的状态:os.Stat(文件名称).Name()....IsDir()....Mode()
func main() { filename := "/Users/xujie/Desktop/file.txt" file,_:=os.Stat(filename) fmt.Println(file.Name()) fmt.Println(file.IsDir()) fmt.Println(file.Size()) fmt.Println(file.Mode()) fmt.Println(file.Sys()) }
3.错误检测
func IsExist(err error) bool // 文件存在,但是由系统产生错误 func IsNotExist(err error) bool // 目录或者文件不存在时返回true func IsPermission(err error)bool // 检测是不是由于权限不足导致的错误
func main() { filename := "file.txt" _, err := os.Stat(filename); fmt.Println(os.IsExist(err)) fmt.Println(os.IsNotExist(err)) }
package main import ( "os" "fmt" ) func main() { os.Chdir("/Users/xujie/Desktop") file,error := os.OpenFile("file.txt",os.O_RDWR,0444) if error != nil { fmt.Println(os.IsPermission(error)) fmt.Println(os.IsPermission(error)) return } _,error = file.WriteString("neirong") if error != nil { fmt.Println(error) fmt.Println(os.IsPermission(error)) } }
4.修改文件夹或者文件的名称
移动文件夹或者文件
检测文件是否是同一个
获取文件模式相关信息
查看文件名称
如何查看所有文件夹下的所有文件和文件数量
获取文件对应的unix文件描述符
- 48.设置文件的读写位置
- 49.修改文件权限
-
- 44.创建软链接
- 45.获取软链接文件对应的实际文件路径地址
- 46.更改指定文件的访问和修改时间
-
- 33.强制改变文件大小
- 34.硬链接
- 35.同步保存当前文件的内容
- 36.NewFile使用给出的Unix文件描述符和名称创建一个文件
- 37.Lstat返回一个描述name指定的文件对象的FileInfo
- 40.获取当前程序可执行的文件地址
获取当前目录
修改当前目录
创建文件夹
删除文件夹或者文件
修改文件夹或者文件的名称
移动文件夹或者文件
把文件所在的目录切换为当前目录
获取临时目录的文件夹路径
读取文件夹的下面文件的名称
47.创建文件夹,并设置权限
获取用户uid 和 群组gid
查看用户所属组的列表
获取调用者有效的用户标识
.Chown修改文件的用户ID和组ID
.获取当前进程id 和其父进程id
通过pid查找进行进程
- 53.启动一个进程
- 54.杀死进程
- 55.释放与进行p关联的任何资源
- 11.错误检测
- 25.
- 26.
- 27.
- 28.
- 29.判断字符是否是支持的路径分割符
- 31.
- 32
- 42.让程序已给定的状态码退出
- 50.管道的用法
- 51.创建系统错误