前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >8.Go-Reader,Writer和ioutil

8.Go-Reader,Writer和ioutil

作者头像
zhang_derek
发布2019-08-12 15:48:37
4660
发布2019-08-12 15:48:37
举报
文章被收录于专栏:有趣的django有趣的django

8.1.Reader

(1)输入流

  • 流是应用程序和外部资源进行数据交互的纽带
  • 流分为输入流和输出流,输入和输出都是相对于程序,把外部数据传入程序中叫做输入流,反之叫做输出流
  • 在Go语言标准库中io包下是Reader接口表示输入流,只要实现这个接口就属于输入流

(2)手动创建流

代码语言:javascript
复制
//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)读取文件内容

代码语言:javascript
复制
//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

代码语言:javascript
复制
//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把文件内容读出来

代码语言:javascript
复制
//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)可以直接读取文件中内容 

代码语言:javascript
复制
//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)写数据

代码语言:javascript
复制
//Learn_Go/main.go
package main

import "io/ioutil"

func main() {
	//每次清空再写,而不是追加
	ioutil.WriteFile("D:/go.txt",[]byte("你好,世界"),0666)
}

(4)读取所有目录

代码语言:javascript
复制
//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盘下所有目录的名字
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 8.1.Reader
  • 8.2.Writer
  • 8.3.ioutil  
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档