使用Golang程序读取现有文件中指定数量的字符
在Golang中,我们可以使用ioutile.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函数将切片的字节数组作为字符串打印。
示例
在以下示例中,我们将使用ioutil包创建一个golang程序,从现有文件中读取指定数量的字符。
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("给定文件的内容为:\n", string(characters))
}
结果
计算机的历史
很难找到计算机的确切起源。
但是据一些专家说,在二战期间已有计算机存在。
此外,当时仅用于保存数据。但是,它仅供政府使用,而不供公众使用。
最重要的是,计算机一开始是一台非常大而笨重的机器。
方法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))
}
输出
计算机领域的编程语言历史可以追溯到早期机械计算机的文献记录到软件开发的现代工具。早期的编程语言高度专业化,依赖于数学符号和类似的不透明的语法。在20世纪期间,编译器理论的研究导致了高级编程语言的创造。
方法3
在这个方法中,我们将编写一个Go语言程序,通过使用io包中的各种函数读取现有文件中指定数量的字符。
算法
- 首先,我们需要导入”fmt”、”io”和”os”包。
-
然后,开始main()函数。在main()函数中使用os.Open函数来打开文件。
-
检查是否在打开文件时发生错误。如果出错,打印错误消息并返回。
-
如果没有出现错误,则使用文件的Read方法将指定数量的字符读取到字节数组中。
-
检查在读取文件时是否出现了错误。
-
如果出现错误,则打印错误消息并返回。如果没有出现错误,则检查实际读取的字符数是否小于所需的字符数。
-
如果是,则打印一个消息,说文件太小,无法读取所需的字符数。
-
如果实际读取的字符数等于或大于所需的字符数,则使用fmt.Println函数将字节数组作为字符串打印出来。
例子
在这个例子中,我们将学习如何创建Go语言程序,使用io和os包从现有文件中读取指定数量的字符。
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))
}
输出
现代人类(智人)在拉丁语中的意思是“聪明的人”。我们的物种是Homo属中唯一幸存的物种,但其起源一直是一个备受争议的话题。现代人类起源于非洲,在过去的20万年内进化出来,并从它们最近的共同祖先——直立人(在拉丁语中意为“直立的人”)进化而来。直立人是一种灭绝的人类物种,生活在190万至13.5万年前。
结论
我们已经成功编译并执行了一个Go编程语言程序,以读取现有文件中指定数量的字符以及示例。这里我们使用了三个示例。在第一个示例中,我们使用了ioutil包提供的易于使用的文件读取函数,而bufio和io包提供了更灵活和高效的文件读取方法,这些方法在第二个示例中使用,在第三个示例中使用了os包。