go语言读写文件的几种方式

Posted traditional

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言读写文件的几种方式相关的知识,希望对你有一定的参考价值。

package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

//使用ioutil读写文件
func ioutil_method(path string){
	//写文件
	//只能写入字节,所以需要转化一下
	content := []byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
	ioutil.WriteFile("a.txt", content, 0644)

	//读文件
	file, err := ioutil.ReadFile(path)
	if err!=nil{
		fmt.Println(err)
		return
	}
	//这里的file一定要加上string,否则会打印一个int数组
	fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用os来读取文件
func os_method(path string){
	//写文件
	f, err:=os.Create("b.txt")
	defer f.Close()
	if err!=nil{
		fmt.Println(err)
		return
	}
	//可以使用f.WriteString写入字符串,也可以使用f.Write写入字节
	f.WriteString("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
	f.Write([]byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい"))

	//读文件
	f, err=os.Open("b.txt")
	if err!=nil{
		fmt.Println(err)
		return
	}
	chunks := make([]byte, 1024)
	buf := make([]byte, 1024)
	for {
		//读取文件必须创建一个缓冲区,表示把f里的内容读到buf里面去,会返回一个n表示读取的长度,和err错误信息
		n, err := f.Read(buf)
		if err!=nil && err!=io.EOF{
			fmt.Println(err)
			return
		}
		if 0 == n{
			break
		}
		//把读取的字节添加到chunks里面去
		chunks = append(chunks, buf[: n]...)
	}
	//读取到的chunks转成string
	fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用bufio读取文件
func bufio_method(){
	f,_:=os.Open("a.txt")
	defer f.Close()
	chunks := make([]byte, 1024)
	buf := make([]byte, 1024)
	r := bufio.NewReader(f)
	for {
		//经过bufio.NewReader处理过的f,也就是r,同样可以调用Read
		n, err := r.Read(buf)
		if err!=nil && err!=io.EOF{
			fmt.Println(err)
		}
		if 0 == n{
			break
		}
		chunks = append(chunks, buf[: n]...)
	}
	fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用ioutil.ReadAll读取文件
func readall_method(){
	f, _:=os.Open("a.txt")
	defer f.Close()
	file, _ := ioutil.ReadAll(f)
	fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}


func main() {
	ioutil_method("a.txt")
	os_method("b.txt")
	bufio_method()
	readall_method()
}

//使用ioutil.ReadAll函数读取文件最好

  

以上是关于go语言读写文件的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

Go 的几种函数参数传递方式

python学习之文件读写入门(文件读的几种方式比较)

C# 文件的读写的几种方式

golang读写文件的几种方式

python里读写excel等数据文件的几种常用方式

应用层与内核的几种通信方式