os

最后更新于:2022-04-02 02:45:17

[TOC] ## 语法 ``` func Getpid() int // 获取pid func Getppid() int // 获取符pid func Hostname() (name string, err error) func NewSyscallError(syscall string, err error) error func Pipe() (r *File, w *File, err error) ``` ## 实例 ### Change #### Chdir 改变工作空间 ``` os.Chdir("test2") ioutil.WriteFile("a.txt", nil, os.ModePerm) ``` 会在运行路径的test2下创建文件 #### Chmod #### Chown / Lchown #### Chtimes ### 文件操作 #### Create ``` file, e := os.Create("test.txt") if e != nil { fmt.Println(e) } n, err := file.WriteString("asdasdasd")) if err != nil { fmt.Println(err) } fmt.Println(n) ``` #### OpenFile 写入/追加内容 ``` O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件 O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件 O_RDWR int = syscall.O_RDWR // 读写模式打开文件 O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部 O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件 O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在 O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件 f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Fatal(err) } if _, err := f.Write([]byte("appended some data\n")); err != nil { f.Close() // ignore error; Write error takes precedence log.Fatal(err) } if err := f.Close(); err != nil { log.Fatal(err) } ``` #### Rename #### Remove / RemoveAll 删除文件或目录 #### Stat / Lstat 获取文件信息 ``` type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDir() bool // abbreviation for Mode().IsDir() Sys() interface{} // underlying data source (can return nil) } FileInfo, _ := os.Stat("test4.go") ``` #### link 复制文件-硬链接 ``` e:= os.Link("build.bat", "build.txt") ``` #### Symlink 创建软连接 #### Readlink 符号对应的文件 #### SameFile 判断是否相同 #### Truncate 切断文件为指定大小 ### 目录 #### Mkdir / MkdirAll 创建目录 ### 环境变量 #### Clearenv 清空所有的环境变量 #### Environ 打印环境变量 #### Getenv 获取变量 ``` func Getenv(key string) string ``` #### LookupEnv 查看,并判断是否有值 ``` func LookupEnv(key string) (string, bool) ``` #### Setenv 设置变量 #### Unsetenv 删除变量 ``` for _, v := range os.Environ() { fmt.Println(v) } ``` #### ExpandEnv 字符串 $foo 替换环境变量 ``` shell := "goroot : $GOROOT" //shell := "goroot : ${GOROOT}" // 等效 fmt.Print(os.ExpandEnv(shell)) ``` ### 获取当前路径 #### Executable - go run 时,返回临时路径 #### Getwd 返回当前路径 ### 权限id #### Getegid 有效用户组调用者返回数值的 #### Geteuid 有效用户id调用者返回数值的 #### Getuid 返回调用者的数字用户id #### Getgid 获取调用者的组id ### pid 与 父 pid #### Getpid #### Getppid ### 用户目录与零食目录 #### UserHomeDir window ``` C:\Users\idcpj ``` #### UserCacheDir widnow ``` C:\Users\idcpj\AppData\Local ``` #### UserConfigDir widnow ``` C:\Users\idcpj\AppData\Roaming ``` #### TempDir() 系统的临时文件 ### err 判断 #### IsPathSeparator 是否目录分隔符 #### IsExist #### IsNotExist #### IsPermission 有权限 ### Args 获取参数 ``` os.Args[0] ``` ### Exit 结束程序
';