Go 标准库介绍三: os
发布时间:2020-12-16 18:17:56 所属栏目:大数据 来源:网络整理
导读:原文链接 http://ironxu.com/751 介绍Go 标准库 os 常用导出函数,结构体及其方法。 import os os 包提供了不依赖平台的操作系统函数接口。错误处理设计为go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。 1. os 常用导出函数 func H
原文链接 http://ironxu.com/751 介绍Go 标准库 os 常用导出函数,结构体及其方法。 import os
os 包提供了不依赖平台的操作系统函数接口。错误处理设计为go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。 1. os 常用导出函数
// go 标准库 os
package main
import (
"fmt"
"os"
)
func main() {
// 预定义变量,保存命令行参数
fmt.Println(os.Args)
// 获取host name
fmt.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)
}
2. File 结构体
// go 标准库 os.File
package main
import (
"fmt"
"os"
"time"
)
func main() {
// 获取当前目录
dir,err)
file := dir + "/new"
var fh *os.File
fi,_ := 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()
}
3. FileInfo 结构体FileInfo用来描述一个文件对象 结构体定义: 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)
}
使用示例: fi,_ := os.Stat(file)
if fi == nil {
fh,_ = os.Create(file) // 文件不存在就创建
} else {
fh,_ = os.OpenFile(file,os.O_RDWR,0666) // 文件存在就打开
}
参考
可以关注我的微博了解更多信息: @刚刚小码农 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |