8.Go-Reader,Writer和ioutil
程序员文章站
2022-06-24 14:05:29
8.1.Reader (1)输入流 流是应用程序和外部资源进行数据交互的纽带 流分为输入流和输出流,输入和输出都是相对于程序,把外部数据传入程序中叫做输入流,反之叫做输出流 在Go语言标准库中io包下是Reader接口表示输入流,只要实现这个接口就属于输入流 (2)手动创建流 (3)读取文件内容 8 ......
8.1.reader
(1)输入流
- 流是应用程序和外部资源进行数据交互的纽带
- 流分为输入流和输出流,输入和输出都是相对于程序,把外部数据传入程序中叫做输入流,反之叫做输出流
- 在go语言标准库中io包下是reader接口表示输入流,只要实现这个接口就属于输入流
(2)手动创建流
//learn_go/main.go
package main
import (
"fmt"
"strings"
)
func main() {
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) //读取的数据长度为: 11
fmt.println("数据内容为:",string(b)) //数据内容为: hello world
}
(3)读取文件内容
//learn_go/main.go
package main
import (
"fmt"
"os"
)
func main() {
f,_ := os.open("d:/test.txt")
fileinfo,_ := f.stat()
b := make([]byte,fileinfo.size())
f.read(b)
fmt.println(string(b))
}
//结果
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
8.2.writer
//learn_go/main.go
package main
import "os"
func main() {
filepath := "d:/go.txt"
f,err := os.openfile(filepath,os.o_append,0660) // 0660 表示权限
defer f.close()
if err != nil{
f,_ = os.create(filepath) //如果文件不存在,就新建一个文件
}
//f.write([]byte("你好,世界"))
f.writestring("床前明月光,\r\n疑是地上霜。\r\n举头望明月,\r\n低头思故乡。")
}
8.3.ioutil
ioutil包下提供了对文件读写的工具函数,通过这些函数快速实现文件的读写操作
(1)打开文件后使用readall把文件内容读出来
//learn_go/main.go
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
f,err := os.open("d:/go.txt")
defer f.close()
if err != nil{
fmt.println(err)
return
}
b,err := ioutil.readall(f)
if err != nil{
fmt.println(err)
return
}
fmt.println(string(b))
}
(2)可以直接读取文件中内容
//learn_go/main.go
package main
import (
"fmt"
"io/ioutil"
)
func main() {
b,err := ioutil.readfile("d:/go.txt")
if err != nil{
fmt.println(err)
return
}
fmt.println(string(b))
}
(3)写数据
//learn_go/main.go
package main
import "io/ioutil"
func main() {
//每次清空再写,而不是追加
ioutil.writefile("d:/go.txt",[]byte("你好,世界"),0666)
}
(4)读取所有目录
//learn_go/main.go
package main
import (
"fmt"
"io/ioutil"
)
func main() {
fi,_ := ioutil.readdir("d:/")
for _,n := range fi{
fmt.println(n.name()) //d盘下所有目录的名字
}
}
上一篇: 手电筒的用法