首页
Preview

golang读取文件

Go语言读取文件

Go语言提供了方便的API来读取文件,本文将通过示例代码来详细讲解读取文件的过程。

打开文件

在读取文件之前,需要先打开文件。使用os.Open函数可以打开一个文件,该函数返回一个*File类型的指针。

func Open(name string) (*File, error)

name参数表示文件的路径,返回值中的error表示打开文件时是否发生了错误。

示例代码:

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()
	// do something with the file
}

该示例代码打开名为example.txt的文件,如果打开文件时发生错误,将打印错误信息并退出程序。如果打开文件成功,则通过defer语句在函数返回时关闭文件。

读取文件

打开文件后,可以读取文件内容。*File类型的指针提供了多个读取文件内容的方法。

读取全部内容

使用ioutil.ReadAll函数可以读取整个文件的内容,该函数返回一个[]byte类型的切片。

func ReadAll(r io.Reader) ([]byte, error)

示例代码:

package main

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

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	content, err := ioutil.ReadAll(file)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("File content: %s", content)
}

该示例代码读取example.txt文件的全部内容,并打印出来。

Golang逐行读取文件内容

使用bufio包提供的NewScanner函数可以逐行读取文件内容,该函数返回一个*bufio.Scanner类型的指针。

func NewScanner(r io.Reader) *Scanner

示例代码:

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		fmt.Println(line)
	}
	if err := scanner.Err(); err != nil {
		fmt.Println(err)
		return
	}
}

该示例代码逐行读取example.txt文件的内容,并打印出来。

参考文献

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
yassk
暂无描述

评论(0)

添加评论