我的Go+语言初体验——使用Go+读写文件经验总结
目录
前言
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
读文件和写文件是所有编程语言必须支持的基础操作,同样,Go+ 也不例外。Go+ 提供了非常丰富的读文件和写文件的基础库。今天我们就来了解一下这部分内容。
读文件
首先,我们介绍一下 Go+ 读文件的一些常用方法。
os.ReadFile
os.ReadFile 方法是用来读取文件信息最常用的方法,原理是将文件的全部内容都读取到内存中,示例代码如下:
import (
"bufio"
"io"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
// 首先创建一个文件,并向其中写入内容
d1 := []byte("hello\nworld\n")
err := os.WriteFile("/tmp/f1", d1, 0644)
dat, err := os.ReadFile("/tmp/f1")
check(err)
print(string(dat))
执行结果:
hello
world
io.ReadAtLeast
io.ReadAtLeast 方法从文件中读取最少字节数到内存中,示例代码如下:
import (
"bufio"
"io"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
// 首先创建一个文件,并向其中写入内容
d1 := []byte("hello\nworld\n")
err := os.WriteFile("/tmp/f1", d1, 0644)
dat, err := os.ReadFile("/tmp/f1")
check(err)
print(string(dat))
f, err := os.Open("/tmp/f1")
check(err)
// 偏移6个字节
o3, err := f.Seek(6, 0)
check(err)
b3 := make([]byte, 2)
n3, err := io.ReadAtLeast(f, b3, 2)
check(err)
printf("%d bytes @ %d: %s\n", n3, o3, string(b3))
执行结果:
hello
world
2 bytes @ 6: wo
bufio.NewReader
bufio.NewReader 方法是一个缓冲读取器,该读取器对于少量数据的读取非常方便。示例代码如下:
import (
"bufio"
"io"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
// 首先创建一个文件,并向其中写入内容
d1 := []byte("hello\nworld\n")
err := os.WriteFile("/tmp/f1", d1, 0644)
dat, err := os.ReadFile("/tmp/f1")
check(err)
print(string(dat))
f, err := os.Open("/tmp/f1")
check(err)
r4 := bufio.NewReader(f)
b4, err := r4.Peek(5)
check(err)
printf("5 bytes: %s\n", string(b4))
执行结果:
hello
world
5 bytes: hello
写文件
os.WriteFile
首先,我们来看如何将字节数组写入文件,示例代码如下:
import (
"bufio"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
d1 := []byte("hello\nworld\n")
err := os.WriteFile("/tmp/f1", d1, 0644)
check(err)
执行完毕后,没有触发 panic,说明程序执行成功啦。但是不够直观,我们把文件内容读一下再打印出来,进而佐证我们的推断,示例代码:
import (
"bufio"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
d1 := []byte("hello\nworld\n")
err := os.WriteFile("/tmp/f1", d1, 0644)
check(err)
dat, err := os.ReadFile("/tmp/f1")
check(err)
print(string(dat))
执行结果:
hello
world
从执行结果可以知道我们的推断是正确的,程序没有问题。
File.Write
写文件还有一种思路,就是首先创建或者打开一个文件,再向其中写入内容信息,示例代码如下:
import (
"bufio"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
f, err := os.Create("/tmp/f2")
check(err)
// 打开文件后,defer 关闭文件属于常规做法
defer f.Close()
d2 := []byte{1, 222, 66, 88, 10, 102}
n2, err := f.Write(d2)
check(err)
printf("wrote %d bytes\n", n2)
n3, err := f.WriteString("gop is go+\n")
check(err)
printf("wrote %d bytes\n", n3)
// 保证文件内容存入磁盘
f.Sync()
执行结果:
wrote 6 bytes
wrote 11 bytes
bufio.WriteString
bufio 包也提供了缓冲写卡器,可以用来写文件,示例代码如下:
import (
"bufio"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
f, err := os.Create("/tmp/f1")
check(err)
// 打开文件后,defer 关闭文件属于常规做法
defer f.Close()
w := bufio.NewWriter(f)
n4, err := w.WriteString("use bufio package write data\n")
check(err)
printf("wrote %d bytes\n", n4)
// 保证缓存数据生效
w.Flush()
执行结果:
wrote 29 bytes
相关推荐
Go-Excelize-用于读写XLSX文件的Golang库
Excelize - 用于读写XLSX文件的Golang库
Go-xlsx-GoogleGo(golang)库用于读写ExcelXLSX文件
xlsx - Google Go (golang)库用于读写Excel XLSX文件
学习 Go 语言(Golang)
学习 Go 语言(Golang),简单易懂的Go语言教程,让你分分钟学会GO语言
golang GO语言开发工具
golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具
golang使用bass库播放mp3文件
golang使用bass.dll播放mp3文件


