os

原创
2014/10/31 23:08
阅读数 619

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()) //返回文件读写指针及可能的错误
	//........今天到这了,累死哥了
}




展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
返回顶部
顶部