Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang标准库的分析os包(6)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这个还是在我的博客首发的,但是我感觉人流量太小,我们写博客的目的不仅是记录我们再用的时候遇到的问题,是为了更好的让大家在以后的学习和开发中也用到~~为go语言的宣传尽自己一点微薄的力量
今天我们讲golang标准库的os包type File struct{},还是废话少说直接上代码@H_675_2@

(1)os.Create()这个函数是创见一个文件函数的原型是func Create(name String) (file *File,err error)输入的是名称字符串类型,返回的是一个File的指针和一个error

import (
    "fmt"
    "os"
    "reflect"
)

func main() {
    f,_ := os.Create("widuu_2.go")
    defer f.Close()
    fmt.Println(reflect.ValueOf(f).Type()) //*os.File
}

(2)os.OpenFile函数的原型是func OpenFile(name String,flag int,perm FileModE) (file *File,err error)要指定文件权限和打开的方式,就是我们上边所用到的

import (
    "fmt"
    "os"
)
func main() {
    f,_ := os.OpenFile("10.go",os.O_RDWR|os.O_CREATE|os.O_TRUNC,0777)
    defer f.Close()
    fmt.Println(f.Stat())
}

(3)os.open()这个函数是打开文件使用的,函数原型是func Open(name String) (file *File,err error),返回值就不说了一样的,它的其实原理是这样的OpenFile(name,O_RDONLY,0)以读文件的模式打开

import (
    "fmt"
    "os"
    "reflect"
)

func main() {
    f,_ := os.Open("1.go")
    defer f.Close()
}

(4)os.Stat()这个是获取fileinfo的结构描述func Stat(name String) (fi FileInfo,err error)返回了Fileinfo这个结构,我们再前边也详细讲了,其实它是怎么实现的呢?因为我们没讲syscall所以我们就讲一个,譬如FileInfo底层获取fs := &fileStat{name: basename(Name)}然后后边逻辑大家可以看源代码

import (
    "fmt"
    "os"
)

func main() {
    f,_ := os.Stat("1.go")
    fmt.Println(f.Size())
}

(5)os.Fd()返回文件的句柄,函数原型是func (file *FilE) Fd() uintptr函数是这样的uintptr(file.fd) 返回的是文件的句柄,句柄是什么?句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数

import (
    "fmt"
    "os"
)

func main() {
    f,_ := os.Open("1.go")
    fmt.Println(f.Fd()) //我的平台句柄是228
}

(6)os.Pipe()这个函数获取函数的读写指针,函数原型func Pipe() (r *File,w *File,err error)

import (
    "fmt"
    "os"
)

func main() {
    r,w,_ := os.Pipe()
    fmt.Println(r,w) //&{0xc08402e120} &{0xc08402e180}
}

(7)os.NewFile()函数原型是func NewFile(fd uintptr,name String) *File 第一个传入的是句柄,然后是文件名称,这个函数并不是真的创建了一个文件,是新建一个文件不保存,然后返回文件的指针

import (
    "fmt"
    "os"
)

func main() {
    f,_ := os.Open("ini.go")
    defer f.Close()
    f1 := os.NewFile(f.Fd(),"ceshi.go") //输如ini.go的句柄
    defer f1.Close()
    fd,_ := f1.Stat()
    fmt.Println(fd.ModTime())   //返回的是ini.go的创建时间2013-11-27 09:11:50.2793737 +0800 CST

}

(8)(f *FilE).Chdir()修改工作目录,函数原型func (f *FilE) Chdir() error,这个时候f必须是目录了,但是吧这个不支持windows

import (
    "fmt"
    "os"
)

func main() {
    dir,_ := os.Getwd()
    fmt.Println(dir)
    f,_ := os.Open("views")
    err := f.Chdir()
    if err != nil {
        fmt.Println(err)
    }
    dir1,_ := os.Getwd()
    fmt.Println(dir1)
}

(9)Chmod(),Chown()都是一样的,当然大家可以直接用os.Chmod(),os.Chdir()函数来改变

今天也就到这里,明天我们继续哈~~~@H_675_2@

博客首发在http://www.widuu.com/archives/01/921.html,大家可以在我的博客找前5个os包的讲解,每天一点了解golang
github的地址:https://github.com/widuu/gopkg@H_675_2@

大佬总结

以上是大佬教程为你收集整理的golang标准库的分析os包(6)全部内容,希望文章能够帮你解决golang标准库的分析os包(6)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。