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语言读写文件的几种方式的主要内容,如果未能解决你的问题,请参考以下文章