Golang 读取现有文件中的全部文本

Golang 读取现有文件中的全部文本

在这篇Golang文章中,我们将使用io/ioutil包中的ReadFile函数、bufio包中的NewScanner函数以及前者包中的NewReader函数来分别从字符串文件中读取全部文本。

语法

bufio.NewReader()

此函数属于Go的bufio包。该函数的主要目标是以较大的块而不是逐行读取数据并存储在缓冲区中。在此函数中,io.reader和缓冲区大小作为参数传递。

os.Open()

这个函数是os包的一部分。它用于打开一个文件进行读取。它接受一个输入参数即要打开的文件名。

ioutil.ReadFile()

这个函数在ioutil包中可用,用于从文件名作为输入参数读取文件的内容。

bufio.NewScanner()

这个函数是bufio包的一部分。它用于创建一个扫描器对象,从文件中读取数据。

步骤

  • 在程序中导入所需的包

  • 创建一个主函数

  • 使用内置函数读取文件的内容

  • 如果内容未正确读取,则打印错误

示例1

在这个示例中,我们将编写一个Go语言程序,通过使用ioutil包中的ReadFile()函数,从现有文件中读取整个文本。这个函数会读取文件的全部内容,并将其作为字节切片返回。

package main

import (
   "fmt"
   "io/ioutil"
)

func main() {
   data, err := ioutil.ReadFile("file.txt")
   if err != nil {
      fmt.Println("Error reading file:", err)
      return
   }
   fmt.Println(string(data))
}

输出

The dictionary says it was Thomas Edison who put hello into common usage. He urged the people who used his phone to say "hello" when answering.
His rival, Alexander Graham Bell, thought the better word was "ahoy."

示例2

在本示例中,我们将编写一个Go语言程序,使用os和bufio包中的函数来读取现有文件中的全部文本。

package main

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

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

   scanner := bufio.NewScanner(file)
   for scanner.Scan() {
      fmt.Println(scanner.Text())
   }

   if err := scanner.Err(); err != nil {
      fmt.Println("Error reading file:", err)
   }
}

输出

The dictionary says it was Thomas Edison who put hello into common usage. He urged the people who used his phone to say "hello" when answering.
His rival, Alexander Graham Bell, thought the better word was "ahoy."

示例3

在这个示例中,我们将使用NewReader函数编写Go语言程序,从文件中读取整个文本。这种方法比以前的方法提供了更多对读取过程的控制。

package main

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

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

   reader := bufio.NewReader(file)
   data, err := reader.ReadString('\n')
   if err != nil {
      fmt.Println("Error reading file:", err)
      return
   }
   fmt.Println(data)
}

输出

The dictionary says it was Thomas Edison who put hello into common usage. He urged the people who used his phone to say "hello" when answering.
His rival, Alexander Graham Bell, thought the better word was "ahoy."

结论

我们成功地编译并执行了一个Go语言程序,从现有的文件中读取整个文本以及示例。在第一个示例中,我们使用了ReadFile()函数,而在第二个和第三个示例中,我们分别使用了NewScanner()和NewReader()函数来实现结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程