码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-09-02 20:08:55      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:最好   缓冲区   bre   文件的   int   调用   写文件   读文件   amp   

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语言读写文件的几种方式

标签:最好   缓冲区   bre   文件的   int   调用   写文件   读文件   amp   

原文地址:https://www.cnblogs.com/traditional/p/9574785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!