Go语言程序读取现有文件的全部文本


在这篇Go语言文章中,我们将分别使用`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

在这个例子中,我们将编写一个Go语言程序,使用`NewReader`函数读取文件的全部文本。此方法比以前的方法提供对读取过程的更多控制。

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()`函数来实现结果。

更新于:2023年5月3日

455 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告