golang 如何将文件读入字符串
go语言提供了很多文件操作工具,其中之一就是如何将文件读入字符串。 ioutil.readfile()
、file.read()
、buf.readfrom()
和 strings.builder 只是可用于高效地将文件内容写入字符串的几种方法。
在 go 中使用 ioutil.readfile() 方法
package main
import
(
"fmt"
"io/ioutil"
)
func main() {
inputdata := []byte("hello, world!")
err := ioutil.writefile("file.txt", inputdata, 0777)
data, err := ioutil.readfile("file.txt")
if err != nil {
fmt.println(err)
}
fmt.print(string(data))
}
输出:
hello, world!
上面的代码允许我们创建一个新文件并写入数据。 然后使用 ioutil.readfile() 方法读取创建的文件。
在 go 中使用 file.read() 方法
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"io"
)
func main() {
inputdata := []byte("hello, world!")
err := ioutil.writefile("file.txt", inputdata, 0777)
f, err := os.open("file.txt")
if err != nil {
log.fatalf("error in reading file: %v", err)
}
defer f.close()
buf := make([]byte, 1024)
for {
n, err := f.read(buf)
if err == io.eof {
break
}
if err != nil {
fmt.println(err)
continue
}
if n > 0 {
fmt.println(string(buf[:n]))
}
}
}
输出:
hello, world!
在上面的代码中,我们通过分割来读取文件。 我们指定每次要读取的缓冲区大小,然后在内存中只分配len(buf)。
然后通过每次迭代分段读取文件。 此方法主要用于大文件,其中文件的内容无法完全放入内存。
在 go 中使用 buf.readfrom() 方法
package main
import (
"fmt"
"io/ioutil"
"os"
"bytes"
"log"
)
func main() {
inputdata := []byte("hello, world!")
err := ioutil.writefile("file.txt", inputdata, 0777)
f, err := os.open("file.txt")
if err != nil{
log.fatal(err)
}
defer f.close()
buf := new(bytes.buffer)
buf.readfrom(f)
data := buf.string()
fmt.print(data)
}
输出:
hello, world!
在上面的代码中,我们使用了 buf.readfrom()
从文件中读取数据直到 eof 并将其附加到缓冲区; 缓冲区大小根据需要增长。
在 go 中使用 strings.builder 方法
package main
import (
"io/ioutil"
"io"
"os"
"strings"
)
func main() {
inputdata := []byte("hello, world!")
err := ioutil.writefile("file.txt", inputdata, 0777)
f, err := os.open("file.txt")
if err != nil {
panic(err)
}
defer f.close()
b := new(strings.builder)
io.copy(b, f)
print(b.string())
}
输出:
hello, world!
在上面的代码中,strings.builder 连接字符串。 数据从文件中逐条读取,然后放在一起打印。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
发布时间:2023/04/27 浏览次数:101 分类:
-
本篇文章介绍了在 golang 的 html 模板中使用 if-else 和 switch 循环。因此,只要输出是 html,就应该始终使用 html 模板包而不是文本模板。
发布时间:2023/04/27 浏览次数:184 分类:
-
本篇文章介绍 nil 在 golang 中的含义,nil 是 go 编程语言中的零值,是众所周知且重要的预定义标识符。
golang 中的 lambda 表达式
发布时间:2023/04/27 浏览次数:691 分类:
-
本篇文章介绍如何在 golang 中创建 lambda 表达式。lambda 表达式似乎不存在于 golang 中。 函数文字、lambda 函数或闭包是匿名函数的另一个名称。
发布时间:2023/04/27 浏览次数:136 分类:
-
当我们尝试生成对象的副本时,深层副本会准确复制原始对象的所有字段。 此外,如果它有任何对象作为字段,也会制作这些对象的副本。本篇文章介绍如何在 golang 中进行深度复制。
发布时间:2023/04/27 浏览次数:104 分类:
-
像错误一样,panic 发生在运行时。 换句话说,当您的 go 程序中出现意外情况导致执行终止时,就会发生 panics。让我们看一些例子来捕捉 golang 中的panics。
go 中的日志级别
发布时间:2023/04/27 浏览次数:585 分类:
-
本篇文章介绍如何在 golang 中创建和使用日志级别。go 中的日志级别。golang提供了一个日志包,名为log,是一个简单的日志包。 这个包不提供分级日志; 如果我们想要分级日志记录,我们必须
在 go 中使用断言
发布时间:2023/04/27 浏览次数:585 分类:
-
本篇文章介绍了 assert 在 golang 中的使用。在 go 语言中使用断言:golang 不提供对断言的任何内置支持,但我们可以使用来自 testify api 的广泛使用的第三方包断言。
go 中的随机数生成
发布时间:2023/04/27 浏览次数:206 分类:
-
本篇文章介绍如何在 go 语言中使用随机数生成功能。go 中的随机数生成 go 语言为随机数生成功能提供内置支持。 内置包 math 有方法 rand(),用于随机数生成。