os包提供了操作系统函数,直接上例子
package main
import (
"fmt"
"os"
)
func main() {
//os包提供了操作系统函数
dir, err := os.Getwd() //获取当前目录路径
fmt.Println("当前目录是"+dir, err)
fmt.Println(os.Getegid()) //调用者的groupid
fmt.Println(os.Getuid()) //调用者的uid
fmt.Println(os.Getgid()) //调用者的gid
g, _ := os.Getgroups()
fmt.Println(g) //调用者属于组的一系列ID
fmt.Println(os.Getppid()) //调用者组的进程ID
fmt.Println(os.Getuid()) //调用者的ID
fmt.Println(os.Getwd()) //原路径
fmt.Println(os.Chdir("E:/gowork")) //切换路径
fmt.Println(os.Getwd()) //切换后的路径
fmt.Println(os.Chdir("E:/gowork/src/tongjh"))
err = os.Mkdir("test", os.ModePerm) //创建一个目录
fmt.Println(err)
err = os.MkdirAll("test/aa/bb/cc", 0777) //创建一个多级目录
fmt.Println(err)
file, err := os.Open("os.go") //以只读方式打开一个文件
fmt.Println(err, file.Fd()) //file.Fd()返回一个文件句柄
data := make([]byte, 100)
num, err := file.Read(data) //将内容读取到[]byte slice中
fmt.Println(num, err, string(data)) //num是取到的多少个字符
err = os.Remove("test.txt") //删除一个文件
fmt.Println(err)
fmt.Println(os.Hostname()) //获取当前的操作系统的主机名
fmt.Println(os.Getpagesize()) //windows里边叫做虚拟内存 linux里边叫做swap
fmt.Println(os.Environ()) //获取当前操作系统的环境变量,返回[]string切片
fmt.Println(os.Getenv("PATH")) //获取系统环境变量
fmt.Println(os.Setenv("key1", "value1")) //设置一个名为key1的环境变量
//os.Clearenv() //清空所有环境变量
//os.Exit(2) //中断执行
mapping := func(s string) string {
m := map[string]string{"str": "我会替换$str变量", "hello": "我会替换$hello变量"}
return m[s]
}
str := os.Expand("你好世界 $str $hello world", mapping) //替换字符串中的$xxx 变量
fmt.Println(str)
path := os.ExpandEnv("gopath is $GOPATH") //替换字符串中的环境变量
fmt.Println(path)
fileinfo, err := os.Stat("test2.txt")
filemode := fileinfo.Mode() //返回os.FileMode
fmt.Println(filemode.IsDir()) //是否是目录
fmt.Println(filemode.IsRegular()) //是否是常规文件
fmt.Println(filemode.Perm()) //返回文件权限
fmt.Println(filemode.String()) //返回文件权限的字符串FileMode
fileinfo, _ = os.Stat("main.go") //返回一个os.FileInfo接口
fmt.Println(fileinfo.Mode()) //获取权限
err = os.Chmod("main.go", 0777) //改变权限
fileinfo, _ = os.Stat("main.go")
fmt.Println(fileinfo.Mode())
fileinfo, _ = os.Lstat("main.go") //返回一个文件的os.FileInfo接口
fmt.Println(fileinfo.Name()) //返回os.FileInfo接口文件的名字
fmt.Println(os.IsPathSeparator('\\')) //返回路径是否是一个分隔符
err = os.Rename("test5.txt", "text.txt") //重命名文件
if err != nil {
if os.IsExist(err) { //返回一个文件或目录是否存在
os.Rename("test5.txt", "test5.php")
}
}
_, err = os.Open("test5.txt")
if err != nil {
fmt.Println(os.IsPermission(err)) //是否有文件操作权限
}
fmt.Println(os.RemoveAll("test")) //删除目录及目录下的所有文件及目录
file, err = os.Create("test5.txt") //创建一个文件,权限为0666,如果已经存在,会清空文件内容
fmt.Println(file.Name(), err)
num, err = file.Write([]byte("你好世界")) //向文件写入,参数是[]byte
fmt.Println(num, err)
fmt.Println(file.WriteString("大家好")) //和file.Write一样,只能参数是string
fmt.Println(file.WriteAt([]byte("哈喽"), 0)) //从第0个字符开始追加
file, _ = os.OpenFile("test4.txt", os.O_RDWR|os.O_CREATE, 0777) //以os.O_RDWR方式打开一个文件
defer file.Close() //最后关闭文件
fmt.Println(file.Name())
fileinfo, _ = os.Stat("test4.txt") //打开一个文件返回一个os.FileInfo
fmt.Println(fileinfo.Name())
fmt.Println(os.Pipe()) //返回文件读写指针及可能的错误
//........今天到这了,累死哥了
}