go语言文件操作
2015-05-06 11:54
831 查看
摘要: 本文主要解说go语言的文件操作.系统底层的open\write等系统调用,往往操作的文件对象是文件描写叙述符;而C语言库的文件操作须要借助fopen/fread等函数,它们的操作对象是文件指针.go语言中,对文件操作进行了进一步封装……
//注意,上文中为什么能够用f.fd这个语法,f是File,而File中没有成员?
同一时候File类还实现了例如以下方法:
注意:不同的包中对Reader的定义是不同的,以下是bufio中对Reader的定义
bufio是带有缓冲的io读写包,我们先来看一个样例:
func NewReader(rd io.Reader) *Reader
//NewReader returns a new Reader whose buffer has the default size.
所以说,假设我们想实现Request中的Body,只须要实现io package中的两个interface就能够了.
1.os包中File类
首先,file类是在os包中的,封装了底层的文件描写叙述符和相关信息,同一时候封装了Read和Write的实现。type File struct { *file } type file struct { fd int name string dirinfo *dirInfo nepipe int } func (f *File) Fd( )uintptr{ if f== nil{ return ^(uintptr(0)) } return uintptr(f.fd) }
//注意,上文中为什么能够用f.fd这个语法,f是File,而File中没有成员?
func (f *File) Close() error{ } func (f *File)Stat ()(fi FileInfo, err error){ }
同一时候File类还实现了例如以下方法:
func (f *File) read(b []byte) (n int, err error); func (f *File) write(b []byte) (n int, err error) ; func (f *File) seek(offset int64, whence int) (ret int64, err error) ;
2.io.ReadCloser
在go语言中,带有er后缀的往往是接口,ReadCloser顾名思义,就是包括Read和Close方法的借口。我们去看看这两个接口的定义和实现:type Reader interface { Read(p []byte) (n int, err error) } type Closer interface { Close() error }
注意:不同的包中对Reader的定义是不同的,以下是bufio中对Reader的定义
3. bufio package
type Reader struct { // contains filtered or unexported fields } type Reader struct { buf []byte rd io.Reader r, w int err error lastByte int lastRuneSize int }
bufio是带有缓冲的io读写包,我们先来看一个样例:
package main import ( "fmt" "os" "bufio" "io" ) func main() { f, err := os.Open("c:\\aaa.txt")//打开文件 defer f.Close() //打开文件出错处理 if nil == err { buff := bufio.NewReader(f) //读入缓存 for { line, err := buff.ReadString('\n') //以'\n'为结束符读入一行 if err != nil || io.EOF == err { break } fmt.Print(line) //能够对一行进行处理 } } }
func NewReader(rd io.Reader) *Reader
//NewReader returns a new Reader whose buffer has the default size.
4.实例
type Request struct { // The message body. ... Body io.ReadCloser ... }
所以说,假设我们想实现Request中的Body,只须要实现io package中的两个interface就能够了.
相关文章推荐
- Go语言学习(九)文件操作
- Go语言的文件操作代码汇总
- Go语言学习(九)文件操作
- Go语言文件操作
- Go语言文件操作
- go语言学习-文件操作 path path/filepath
- Go语言_Go读写文件操作
- 【Go语言】集合与文件操作
- go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
- Go语言 操作二进制文件
- Go语言文件操作
- Go语言学习笔记(五)文件操作
- Go语言文件操作的方法
- Go语言学习(九)文件操作
- go语言文件操作
- go 语言文件操作
- Go语言文件操作
- Go语言下的文件读写操作
- go语言之行--文件操作、命令行参数、序列化与反序列化详解
- go语言中常用的文件和文件夹操作函数