golang:常用文件读写操作

Posted live4m

tags:

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


文件读取:

package main

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

func ReadByOs() { //os库
	f, err := os.Open("./in.txt") //os.Open():以只读方式打开文件
	if err != nil {
		fmt.Printf("os.Open() failed, err:%v. ", err)
	}
	defer f.Close()
	buf := make([]byte, 1024)
	for { //循环读取文件数据
		_, err := f.Read(buf)
		if err == io.EOF {
			break
		}
		if err != nil {
			fmt.Printf("f.Read() failed, err:%v. ", err)
		}
		fmt.Print(string(buf))
	}
}
func ReadByBufio() { //bufio库,在os库file的基础上封装了一层API
	f, err := os.Open("./in.txt") //os.Open():以只读方式打开文件
	if err != nil {
		fmt.Printf("os.Open() failed, err:%v. ", err)
	}
	defer f.Close()
	reader := bufio.NewReader(f)
	for {
		line, err := reader.ReadString('\\n') //一直读到分隔符,如果没有分隔符则err
		if err == io.EOF {
			break
		}
		if err != nil {
			fmt.Printf("reader.ReadString() failed, err:%v. ", err)
		}
		fmt.Print(line)
	}
}
func ReadByIoutil() { //ioutil库
	bytes, err := ioutil.ReadFile("in.txt") //读取文件所有数据
	if err != nil {
		fmt.Printf("ioutil.ReadFile() failed, err:%v. ", err)
	}
	fmt.Print(string(bytes))
}
func main() {
	// ReadByOs()
	// ReadByBufio()
	ReadByIoutil()
}

文件写入:

package main

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

func writeByOs() {
	f, err := os.OpenFile("./out.txt", os.O_CREATE|os.O_RDWR, 0644)
	if err != nil {
		fmt.Printf("os.OpenFile() failed, err:%v. ", err)
	}
	defer f.Close()
	f.Write([]byte("测试输出1\\n"))
	f.WriteString("测试输出2\\n")
}
func writeByBufio() {
	f, err := os.OpenFile("./out.txt", os.O_CREATE|os.O_RDWR, 0644)
	if err != nil {
		fmt.Printf("os.OpenFile() failed, err:%v. ", err)
	}
	defer f.Close()
	writer := bufio.NewWriter(f)
	writer.Write([]byte("测试输出1\\n"))
	writer.WriteString("测试输出2\\n")
	writer.Flush() //需要清空缓冲区
}
func writeByIoutil() {
	err := ioutil.WriteFile("./out.txt", []byte("测试输出1\\n测试输出2\\n"), 0666)
	if err != nil {
		fmt.Printf("ioutil.WriteFile() failed, err:%v. ", err)
	}
}
func main() {
	// writeByOs()
	// writeByBufio()
	writeByIoutil()
}

io.copy的使用


以上是关于golang:常用文件读写操作的主要内容,如果未能解决你的问题,请参考以下文章

Golang系列:其他常见的文件操作

Golang文件IO 一

golang笔记-日志小结

Golang读写文件的几种方式

golang——写文件和读文件

java常用的文件读写操作