原文链接 http://ironxu.com/751
介绍Go 标准库 os 常用导出函数,结构体及其方法。
import osos 包提供了不依赖平台的操作系统函数接口。错误处理设计为go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。
$GOPATH/src/github.com/ironxu/go_note/library/os/os.go 源码如下:
// 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) }$GOPATH/src/github.com/ironxu/go_note/library/os/file.go 源码如下:
// go 标准库 os.File package main import ( "fmt" "os" "time" ) func main() { // 获取当前目录 dir, err := os.Getwd() fmt.Println(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() }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) } func Stat(name string) (fi FileInfo, err error) // Stat 返回描述文件的FileInfo。如果指定的文件对象是一个符号链接,返回的FileInfo描述该符号链接指向的文件的信息,本函数会尝试跳转该链接func Lstat(name string) (fi FileInfo, err error) // Lstat 返回描述文件对象的FileInfo。如果指定的文件对象是一个符号链接,返回的FileInfo描述该符号链接的信息,本函数不会试图跳转该链接。使用示例:
fi, _ := os.Stat(file) if fi == nil { fh, _ = os.Create(file) // 文件不存在就创建 } else { fh, _ = os.OpenFile(file, os.O_RDWR, 0666) // 文件存在就打开 }可以关注我的微博了解更多信息: @刚刚小码农