Go语言通过os和io包实现文件读写操作。1. 使用os.Create创建文件并Write或WriteString写入内容;2. os.Open打开文件后调用Read方法分块读取,适用于大文件;3. 结合io.ReadAll一次性读取小文件全部内容,但占用内存较高;4. 利用io.Copy高效复制文件,自动处理缓冲。核心在于理解io.Reader和io.Writer接口的抽象机制,掌握这些基础操作可应对大多数文件IO场景。

Go语言中的io包提供了处理输入输出的基础接口和工具,尤其在文件操作中经常与os包配合使用。下面通过几个基础示例演示如何进行常见的文件IO操作。
使用os.Create创建文件,并调用Write方法写入数据:
package main
import (
"os"
"log"
)
func main() {
file, err := os.Create("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
content := "Hello, Golang IO!\n"
_, err = file.Write([]byte(content))
if err != nil {
log.Fatal(err)
}
}
也可以使用WriteString直接写字符串:
file.WriteString("Another line.\n")
立即学习“go语言免费学习笔记(深入)”;
使用os.Open打开文件,然后调用Read方法读取内容:
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
data := make([]byte, 100)
n, err := file.Read(data)
if err != nil {
log.Fatal(err)
}
log.Printf("读取了 %d 字节: %s", n, data[:n])
这种方式适合处理大文件,逐块读取避免内存溢出。
对于小文件,可以结合io.ReadAll一次性读取全部内容:
package main
import (
"os"
"io"
"log"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
data, err := io.ReadAll(file)
if err != nil {
log.Fatal(err)
}
log.Printf("文件内容: %s", data)
}
注意:此方法会将整个文件加载到内存,仅适用于小文件。
使用io.Copy可以方便地实现文件复制:
src, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer src.Close()
dst, err := os.Create("copy.txt")
if err != nil {
log.Fatal(err)
}
defer dst.Close()
_, err = io.Copy(dst, src)
if err != nil {
log.Fatal(err)
}
该方式高效且自动处理缓冲,是推荐的拷贝方式。
基本上就这些。掌握这些基础操作后,就能灵活处理大多数文件读写场景。关键是理解io.Reader和io.Writer接口的使用,它们是Go中IO操作的核心抽象。
以上就是Golang io文件IO操作基础示例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号