来源:自学PHP网 时间:2019-08-07 16:47 作者:小飞侠 阅读:次
[导读] Go语言编程中对文件读写的基本方法整理...
1.func Copy(dst Writer, src Reader) (written int64, err error)这个函数是从一个文件读取拷贝到另外一个文件,一直拷贝到读取文件的EOF,所以不会返回io.EOF错误,参数是写入目标器和读取目标器,返回int64的拷贝字节数和err信息
复制代码 代码如下:
import ( "fmt" "io" "os" ) func main() { 2.func CopyN(dst Writer, src Reader, n int64) (written int64, err error)看函数就知道了跟上述的是一样的,只是多加了一个读取数的限制,然后我们看下代码
复制代码 代码如下:
import ( "fmt" "io" "io/ioutil" "os" ) func main() { 3.func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)这个函数就是从读取器中读取数据放到我们的buf中,限定了最小的读取字节数,如果我们读取的数据小于最小读取器,譬如你设定min的值是8,但是你读取的数据字节数是5就会返回一个`io.ErrUnexpectedEOF`,如果大于就会返回`io.ErrShortBuffer`,读取完毕会有`io.EOF`~~,多讲一些哈,这个Reader只要我们满足这个interface就可以用这个
复制代码 代码如下:
type Reader interface { Read(p []byte) (n int, err error) } 其中*File就支持func (f *File) Read(b []byte) (n int, err error)
复制代码 代码如下:
import ( "fmt" "io" "os" ) func main() { 4.func ReadFull(r Reader, buf []byte) (n int, err error)这个函数和上边的函数是相似,只不过是读取len(buf)个,放在buf中
复制代码 代码如下:
import ( func main() { fmt.Println("Read value:", string(b)) //如果b是5 就出现这里 5.func WriteString(w Writer, s string) (n int, err error)弄完读了,当然带要写了,这个函数主要是向写入目标中写入字符创,返回是写入的字节数还有error错误,主要是权限的错误,其中写入呀!都是writer这个结构就可以写入
复制代码 代码如下:
type Writer interface { func main() { 6.type LimitedReader
复制代码 代码如下:
type LimitedReader struct { 只实现了一个方法func (l *LimitedReader) Read(p []byte) (n int, err error)其实我们不难发现这个跟我们的ReadAtLast()就是亲兄弟的节奏
复制代码 代码如下:
import ( "fmt" "io" "os" ) func main() { } } 7.type PipeReader
复制代码 代码如下:
type PipeReader struct { // contains filtered or unexported fields } (1)func Pipe() (*PipeReader, *PipeWriter)创建一个管道,并返回它的读取器和写入器,这个会在内存中进行管道同步,它的开启会io.Reader然后等待io.Writer的输入,没有内部缓冲,它是安全的调用Read和Write彼此和并行调用写
复制代码 代码如下:
import ( func main() { (2)func (r *PipeReader) Close() error管道关闭后,正在进行或后续的写入Write操作返回ErrClosedPipe
复制代码 代码如下:
import ( "fmt" "io" ) func main() { _, err := w.Write([]byte("hello widuu")) if err == io.ErrClosedPipe { (3)func (r *PipeReader) CloseWithError(err error) error这个就是上边的r.Close关闭的时候,写入器会返回错误的信息
复制代码 代码如下:
import ( func main() { (4)func (r *PipeReader) Read(data []byte) (n int, err error)标准的阅读接口,它从管道中读取数据、阻塞一直到一个写入接口关闭,如果写入端发生错误,它就会返回错误,否则返回的EOF
复制代码 代码如下:
import ( "fmt" "io" ) func main() { |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com