当前位置: 首页 > news >正文

os

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




转载于:https://my.oschina.net/tongjh/blog/339686

相关文章:

  • [NHibernate]一对多关系(关联查询)
  • this web application instance has been stopped already. Could not load java.net.BindException
  • L3 MPLS ××× InterAS Option B: MP-eBGP between ASBRs
  • SVN完全备份svnadmin hotcopy
  • 几条关于异常处理的备忘
  • BASE64转换,内含:IOS自带DES加解密
  • 理解javascript 回调函数
  • Linux下oracle11g 导入导出操作详细
  • linux 文件操作
  • unity 2d 和 NGUI layer
  • 抽象类 接口
  • HDU 1576 (乘法逆元)
  • 封装一个xib步骤
  • J2EETomcat 的配置
  • PPTP一键安装脚本及使用webmin管理PPTP ××× Server
  • 2017 前端面试准备 - 收藏集 - 掘金
  • angular学习第一篇-----环境搭建
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS从零开始部署Nodejs项目
  •  D - 粉碎叛乱F - 其他起义
  • Git 使用集
  • gops —— Go 程序诊断分析工具
  • GraphQL学习过程应该是这样的
  • happypack两次报错的问题
  • HashMap剖析之内部结构
  • Java,console输出实时的转向GUI textbox
  • LeetCode18.四数之和 JavaScript
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Odoo domain写法及运用
  • Redux 中间件分析
  • session共享问题解决方案
  • zookeeper系列(七)实战分布式命名服务
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 使用docker-compose进行多节点部署
  • 微信小程序填坑清单
  • 微信支付JSAPI,实测!终极方案
  • # 数据结构
  • #NOIP 2014#Day.2 T3 解方程
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (办公)springboot配置aop处理请求.
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)计算机毕业设计大学生兼职系统
  • (九)One-Wire总线-DS18B20
  • (一)u-boot-nand.bin的下载
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)【Hibernate总结系列】使用举例
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)树状数组
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net与java建立WebService再互相调用
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /etc/fstab和/etc/mtab的区别