网站首页 > 基础教程 正文
在本章中,我们将深入探讨 Go 编程语言中的文件处理和 I/O(输入/输出)操作。 文件是存储和检索数据的基本方式,了解如何读取和写入文件对于构建广泛的应用程序至关重要。 我们将探索文件打开、读取、写入等。
10.1 打开和关闭文件
Go提供了打开和关闭文件的函数,使您能够对文件数据执行各种操作。
**打开文件:**
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
// File operations...
}
10.2 读取文件
您可以使用各种技术从文件中读取数据,例如读取字节片、读取行或使用缓冲读取器。
**读取字节片:**
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data, err := ioutil.ReadFile("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("File Content:")
fmt.Println(string(data))
}
**用扫描仪读取行:**
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println("Line:", scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Println("Error:", err)
}
}
10.3 写入文件
您可以使用“os.Create()”和“ioutil.WriteFile()”等函数将数据写入文件。
**写入数据:**
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
content := []byte("Hello, Go!")
// Using ioutil.WriteFile
err := ioutil.WriteFile("output.txt", content, 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
// Using os.Create and file.WriteString
file, err := os.Create("output2.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
_, err = file.WriteString("Hello again, Go!")
if err != nil {
fmt.Println("Error:", err)
}
}
10.4 缓冲I/O
缓冲 I/O 通过减少读取或写入数据时的系统调用次数来提高性能。
**使用缓冲读取器和写入器:**
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
fmt.Print("Line:", line)
}
}
10.5 文件 I/O 最佳实践
- 文件操作后始终检查错误。
- 使用“defer”推迟文件的关闭。
- 使用缓冲 I/O 来提高性能。
- 适当指定文件权限。
- 读取文件时处理不同的行结尾。
- 避免一次将大文件读入内存。
文件处理和 I/O 操作是任何程序员的基本技能。 通过了解如何打开、读取和写入文件,您可以处理各种类型的数据并构建与文件系统交互的应用程序。 在下一章中,我们将探索 Go 中的网络编程,允许您创建通过网络进行通信的应用程序。 继续努力!
猜你喜欢
- 2024-11-26 golang defer、panic、recover实践
- 2024-11-26 go-fastdfs文件上传
- 2024-11-26 OpenHarmony3.0在树莓派3B上的烧录与通讯
- 2024-11-26 go|bytes.buffer
- 2024-11-26 AOVX资产跟踪产品测试工具mPower1203如何使用python对接 (二)
- 2024-11-26 Python os.dup2() 方法是什么?os.du
- 2024-11-26 go中关于文件和json操作的知识点小结
- 2024-11-26 python3从零学习-5.8.4、mmap—内存映射文件支持
- 2024-11-26 29.Python 读取文件的六种方式
- 2024-11-26 macOS安装并设置五笔输入法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)