一、打开文件和关闭文件
import ( "fmt" "os" ) func main() { // 打开文件 file, err := os.Open("e:/a.txt") if err != nil { fmt.Printf("打开文件出错:%v\n", err) } fmt.Println(file) // &{0xc00006a780} // 关闭文件 err = file.Close() if err != nil { fmt.Printf("关闭文件出错:%v\n", err) } }
二、读文件
读取文件内容并显示在终端
方式一:(带缓冲方式)
import ( "bufio" "fmt" "io" "os" ) func main() { // 打开文件 file, err := os.Open("e:/a.txt") if err != nil { fmt.Printf("打开文件出错:%v\n", err) } // 及时关闭文件句柄 defer file.Close() // bufio.NewReader(rd io.Reader) *Reader reader := bufio.NewReader(file) // 循环读取文件的内容 for { line, err := reader.ReadString('\n') // 读到一个换行符就结束 if err == io.EOF { // io.EOF表示文件的末尾 break } // 输出内容 fmt.Print(line) } }
方式二:一次性将整个文件读入到内存中,这种方式适用于文件不大的情况。(使用 io/ioutil.ReadFile 方法)
import ( "fmt" "io/ioutil" ) func main() { // 使用 io/ioutil.ReadFile 方法一次性将文件读取到内存中 filePath := "e:/.txt" content, err := ioutil.ReadFile(filePath) if err != nil { // log.Fatal(err) fmt.Printf("读取文件出错:%v", err) } fmt.Printf("%v\n", content) fmt.Printf("%v\n", string(content)) }