简介

介绍Go 标准库 os 常用导出函数,结构体及其方法。

import os

os 包提供了不依赖平台的操作系统函数接口。错误处理设计为go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。

常用导出函数

  • func Hostname() (name string, err error) // Hostname返回内核提供的主机名
  • func Environ() []string // Environ返回表示环境变量的格式为”key=value”的字符串的切片拷贝
  • func Getenv(key string) string // Getenv检索并返回名为key的环境变量的值
  • func Getpid() int // Getpid返回调用者所在进程的进程ID
  • func Exit(code int) // Exit让当前程序以给出的状态码code退出。一般来说,状态码0表示成功,非0表示出错。程序会立刻终止,defer的函数不会被执行
  • func Stat(name string) (fi FileInfo, err error) // 获取文件信息
  • func Getwd() (dir string, err error) // Getwd返回一个对应当前工作目录的根路径
  • func Mkdir(name string, perm FileMode) error // 使用指定的权限和名称创建一个目录
  • func MkdirAll(path string, perm FileMode) error // 使用指定的权限和名称创建一个目录,包括任何必要的上级目录,并返回nil,否则返回错误
  • func Remove(name string) error // 删除name指定的文件或目录
  • func TempDir() string // 返回一个用于保管临时文件的默认目录
  • var Args []string Args保管了命令行参数,第一个是程序名。
// go 标准库 os
package mainimport ("fmt""os"
)func main() {// 预定义变量, 保存命令行参数fmt.Println(os.Args)// 获取host namefmt.Println(os.Hostname())fmt.Println(os.Getpid())// 获取全部环境变量env := os.Environ()for k, v := range env {fmt.Println(k, v)}// 终止程序// os.Exit(1)// 获取一条环境变量fmt.Println(os.Getenv("PATH"))// 获取当前目录dir, err := os.Getwd()fmt.Println(dir, err)// 创建目录err = os.Mkdir(dir+"/new_file", 0755)fmt.Println(err)// 创建目录err = os.MkdirAll(dir+"/new", 0755)fmt.Println(err)// 删除目录err = os.Remove(dir + "/new_file")err = os.Remove(dir + "/new")fmt.Println(err)// 创建临时目录tmp_dir := os.TempDir()fmt.Println(tmp_dir)
}

File结构体

  • func Create(name string) (file *File, err error) // Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
  • func Open(name string) (file *File, err error) // Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式
  • func (f *File) Stat() (fi FileInfo, err error) // Stat返回描述文件f的FileInfo类型值
  • func (f *File) Readdir(n int) (fi []FileInfo, err error) // Readdir读取目录f的内容,返回一个有n个成员的[]FileInfo,这些FileInfo是被Lstat返回的,采用目录顺序
  • func (f *File) Read(b []byte) (n int, err error) // Read方法从f中读取最多len(b)字节数据并写入b
  • func (f *File) WriteString(s string) (ret int, err error) // 向文件中写入字符串
  • func (f *File) Sync() (err error) // Sync递交文件的当前内容进行稳定的存储。一般来说,这表示将文件系统的最近写入的数据在内存中的拷贝刷新到硬盘中稳定保存
  • func (f *File) Close() error // Close关闭文件f,使文件不能用于读写
// go 标准库 os.File
package mainimport ("fmt""os""time"
)func main() {// 获取当前目录dir, err := os.Getwd()fmt.Println(dir, err)file := dir + "/new"var fh *os.Filefi, _ := os.Stat(file)if fi == nil {fh, _ = os.Create(file) // 文件不存在就创建} else {fh, _ = os.OpenFile(file, os.O_RDWR, 0666) // 文件存在就打开}w := []byte("hello go language" + time.Now().String())n, err := fh.Write(w)fmt.Println(n, err)// 设置下次读写位置ret, err := fh.Seek(0, 0)fmt.Println("当前文件指针位置", ret, err)b := make([]byte, 128)n, err = fh.Read(b)fmt.Println(n, err, string(b))fh.Close()
}

os.Stat

import ("fmt""os"
)func main() {fileinfo, err := os.Stat(`C:\Users\Administrator\Desktop\UninstallTool.zip`)if err != nil {panic(err)}fmt.Println(fileinfo.Name())    //获取文件名fmt.Println(fileinfo.IsDir())   //判断是否是目录,返回bool类型fmt.Println(fileinfo.ModTime()) //获取文件修改时间fmt.Println(fileinfo.Mode())fmt.Println(fileinfo.Size()) //获取文件大小fmt.Println(fileinfo.Sys())
}

golang中的os包相关推荐

  1. golang中container/list包中的坑

    转载地址:golang中container/list包中的坑 - Go语言中文网 - Golang中文社区 golang中list包用法可以参看golang中container/list包用法_che ...

  2. Golang中log日志包的使用

    文章目录 1.前言 2.log包介绍 3.log包的使用 3.1 日志输出方法 3.2 自定义创建日志对象 3.3 封装自定义日志包 3.4 log包进一步解析 1.前言 作为后端开发人员,日志文件记 ...

  3. 深入理解Golang中的Context包

    context.Context是Go语言中独特的设计,在其他编程语言中我们很少见到类似的概念.context.Context深度支持Golang的高并发. 1. Goroutine和Channel 在 ...

  4. Golang中import 导入包的几种方式:点,别名与下划线

    在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import (// 多个"google.golang.org/grpc""imcs/ ...

  5. Go语言自学系列 | golang标准库os包和环境相关的方法

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  6. Golang中path/filepath包

    path/filepath包下的相关函数 1. ToSlash函数 func ToSlash(path string) string 功能:将path中平台相关的路径分隔符转换成'/' 例如:wind ...

  7. Go语言自学系列 | golang标准库os包进程相关操作

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  8. golang 中的sort 包

    sort接口 一个很好的例子是来自标准库的 sort 包,要对一组数字或字符串排序,只需要实现三个方法:反映元素个数的 Len() 方法.比较第 i 和 j 个元素的 Less(i, j) 方法以及交 ...

  9. Golang 中 sync/atomic 包的原子操作

    背景 Go中多协程的情况下, 要保证操作的原子性,一般要使用RWMutex或者Mutex, 但是锁使用起来比较复杂,还要考虑lock 和unlock 顺序和成对出现,不注意就容易出错. 于是在sync ...

最新文章

  1. redis之sorted sets类型及操作
  2. 2021年的芯片市场,骗子太多,傻子不够用
  3. 【Python科学计算系列】矩阵
  4. IOC容器(底层原理解读)
  5. 图片服务 - thumbor可用的探测器
  6. linux 文件管理器_8个Linux文件管理器尝试
  7. 逻辑操作符的备选表示
  8. Git创建版本库和添加文件
  9. 常见Promise面试题
  10. 删除网络信息服务器端,网络安全:手动清除gh0st远控服务端
  11. RDD持久化(缓存)
  12. random-生成随机数模块
  13. python贪吃蛇源代码_python实现贪吃蛇游戏源码
  14. 给新生的软件网站工具推荐
  15. php 网上支付之易宝支付
  16. Excel自定义函数
  17. 分布式文件系统(DFS)浅析
  18. 项目记录-手机号码限制频次
  19. 14-1 没名字
  20. 善用“天时、地利、人和”,项目经理才能更有底气地要人要资源

热门文章

  1. 【Flutter】StatefulWidget 组件 ( Image 组件 | TextField 组件 )
  2. 【数理逻辑】谓词逻辑 ( 个体词 | 个体域 | 谓词 | 全称量词 | 存在量词 | 谓词公式 | 习题 )
  3. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
  4. Android java 多线程(三)
  5. windows 域用户账号验证登陆
  6. Yii-upload- 用AJAX上传图片
  7. 轻量级前端MVVM框架avalon - 模型转换
  8. VMware安装和使用时遇到的一些小问题及解决方法
  9. 算法分析之-渐进记号
  10. Java 基础数据类型