go语言—Reader
Reader
即输入流,那么什么又是流? 流(stream
)是应用程序和外部资源进行数据交互的纽带;- 流又分为输入流和输出流;这里的输入和输出都是相对于应用程序而言的,把外部资源输入到应用程序称之为输入流,反之为输出流;
- 输入流即
Input Stream
,输出流即Output Stream
,二者合称为I/O流; - go语言中标准库的
io
包下Reader
接口表示输入流,只要实现这个接口就属于输入流; Reader
接口源码:type Reader interface {
Read(p []byte) (n int, err error)
}
- Read方法要读取的是字节类型的切片,所以需要将数据转化为字节切片,可以使用make()方法;切片长度可以从字符串流或者文件对象的属性中获取到;
package main
import (
"fmt"
"os"
"strings"
)
func main() {
createStrStream()
readFromFile()
}
func createStrStream() {
r := strings.NewReader("Hello World! 你好,世界!")
b := make([]byte, r.Size())
n, err := r.Read(b)
if err != nil {
fmt.Println("流数据读取失败!", err)
return
}
fmt.Println("读取的数据长度是: ", n)
fmt.Println("数据内容: ", string(b))
}
func readFromFile() {
f, _ := os.Open("goReader.txt")
fileInfo, _ := f.Stat()
b := make([]byte, fileInfo.Size())
n, err := f.Read(b)
if err != nil {
fmt.Println("数据读取失败, ", err)
return
}
fmt.Println("数据长度是: ", n)
fmt.Println("数据内容是: ", string(b))
}