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
文件的内容,并打印出来。
评论(0)