Golang 从现有文件中读取指定数量的字符

Golang 从现有文件中读取指定数量的字符

在Golang中,我们可以使用ioutil.ReadFile()来读取文件,并使用for循环定时器来限制要读取的字符数,使用Os.Open和bufio.NewReader函数来执行以及使用file.Read()进行读取。在本文中,我们将学习如何使用Golang的OS和bufio包从现有文件中读取指定数量的字符。

语法

ioutil.ReadFile(file)

ReadFile()函数存在于ioutil包中,用于读取给定的文件。该函数接受要读取的文件作为参数。要从文件中读取指定数量的字符,我们可以使用ReadFile函数,然后从返回的字节切片中提取所需数量的字符。

File.Read(file name)

Read方法返回两个值:实际读取的字符数(n)和一个错误(err)。我们检查是否有错误,并且如果有错误,我们检查错误是否是EOF(文件结尾)错误。如果不是EOF错误,我们打印错误消息并返回。

bufio.NewReader()

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

os.Open()

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

方法1

在这个方法中,我们将使用ioutil包中的Read()函数来从现有文件中读取字符。

步骤

  • 首先,我们需要导入fmt和ioutil包。

  • 现在,开始main()函数。在main()中使用ReadFile()函数来读取文件的内容。

  • 在读取文件时检查是否有任何错误。如果发生错误,在屏幕上打印错误消息。

  • 如果没有生成错误,则在屏幕上打印文件的内容。

  • 使用fmt.Println函数将切片字节片作为字符串打印。

示例

在以下示例中,我们将创建一个golang程序,使用ioutil包从现有文件中读取指定数量的字符。

package main

import (
   "fmt"
   "io/ioutil"
)

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

   if len(content) < 5 {
      fmt.Println("File is too small to read 5 characters")
      return
   }

   characters := content[:]
   fmt.Println("The contents of given file are:\n", string(characters))
}

输出

History of Computers
It is very difficult to find the exact origin of computers.
But according to some experts computer exists at the time of world war-II.
Also, at that time they were used for keeping data. But, it was for only government use and not for public use.
Above all, in the beginning, the computer was a very large and heavy machine.

方法2

在这个方法中,我们将编写一个Go语言程序,通过使用bufio包中的Read()函数来从文件中读取指定的字符。为了使用bufio包从文件中读取指定数量的字符,我们可以使用NewReader函数创建一个新的缓冲读取器,然后使用Read方法来读取所需数量的字符。

步骤

  • 首先,我们需要导入”os”、”fmt”和”bufio”包。

  • 现在,调用main()函数。在main()中调用Open()函数以打开文件,并调用bufio.NewReader函数来为文件创建一个新的读取器。

  • 使用读取器的Read方法将指定数量的字符读入一个字节切片中。

  • 检查是否在读取文件时发生错误。如果发生错误,则在屏幕上打印错误信息。

  • 如果没有发生错误,则使用fmt.Println函数将字节切片打印为字符串。

示例

在这个示例中,我们将学习如何使用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()

   reader := bufio.NewReader(file)
   characters := make([]byte, 400)
   n, err := reader.Read(characters)
   if err != nil {
      fmt.Println("Error reading file:", err)
      return
   }

   if n < 5 {
      fmt.Println("File is too small to read 5 characters")
      return
   }
   fmt.Println(string(characters))
}

输出

The history of programming languages spans from documentation of early mechanical computers to modern
tools for software development. Early programming languages were highly specialized, relying on
mathematical notation and similarly obscure Syntax. Throughout the 20th century, research in compiler
theory led to the creation of high-level programming languages.

方法3

在这个方法中,我们将编写一个Go语言程序,使用io包中的各种函数从现有文件中读取指定数量的字符。

步骤

  • 首先,我们需要导入”fmt”、”io”和”os”包。

  • 然后,开始main()函数。在main()函数中使用os.Open函数打开文件。

  • 检查打开文件时是否发生错误。如果发生错误,打印错误消息并返回。

  • 如果没有发生错误,则使用文件的Read方法将指定数量的字符读入字节切片。

  • 检查读取文件时是否发生错误。

  • 如果发生错误,打印错误消息并返回。如果没有发生错误,则检查实际读取的字符数是否小于期望的字符数。

  • 如果是,则打印一条消息,说明文件太小,无法读取期望数量的字符。

  • 如果实际读取的字符数等于或大于期望的字符数,则使用fmt.Println函数将字节切片打印为字符串。

示例

在这个示例中,我们将学习如何使用io和os包创建一个Go语言程序,从现有文件中读取指定数量的字符。

package main

import (
   "fmt"
   "io"
   "os"
)

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

   characters := make([]byte, 450)
   n, err := file.Read(characters)
   if err != nil && err != io.EOF {
      fmt.Println("Error reading file:", err)
      return
   }

   if n < 5 {
      fmt.Println("File is too small to read 5 characters")
      return
   }

   fmt.Println(string(characters))
}

输出

Modern humans (Homo sapiens), the species? that we are, means ‘wise man’ in Latin. Our species is the only surviving species of the genus
Homo but where we came from has been a topic of much debate. Modern humans originated in Africa within the past 200,000 years
and evolved from their most likely recent common ancestor, Homo erectus, which means ‘upright man’ in Latin.
Homo erectus is an extinct species of human that lived between 1.9 million and 135,000 years ago.

结论

我们成功地编译并执行了一个Go语言程序,该程序可以从现有文件中读取指定数量的字符,并提供了示例。我们使用了三个示例。在第一个示例中,我们使用了ioutil包提供的一个易于使用的函数来读取文件,而bufio和io包提供了更灵活和高效的读取文件方法,这在第二个示例中使用,在第三个示例中我们使用了os包。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程