Go 编程 | 连载 30 - 文件 I/O

简介: Go 编程 | 连载 30 - 文件 I/O

一、文件读写

Go 中提供了 ioutil 标准库来进行文件读写操作,使用该标准库进行文件读写无须进行关闭操作,该标准库可以完成如下操作:

  • 读取文件
  • 列出指定目录的内容
  • 创建文件
  • 写入文件
  • 创建临时目录
  • 创建临时文件

文件读取

ioutil 标准库下的 Readfile 函数可以以字节切片的方式读取返回文件的内容,因此在结果返回后仍然需要调用 string 内置函数将字节切片转换成字符串。

首先在项目目录下新建一个 info.txt 文件,并输入内容。

package main
import (
   "fmt"
   "io/ioutil"
   "log"
)
func main(){
   byteContent, err := ioutil.ReadFile("info.txt")
   if err != nil {
      log.Fatal(err)
   }
   fmt.Println(string(byteContent))
}
复制代码

执行上述代码,输出结果如下:

Go is expressive, concise, clean, and efficient.
Its concurrency mechanisms make it easy to write
programs that get the most out of multicore and networked machines,
while its novel type system enables flexible and modular program construction.
复制代码

输出结果与 info.txt 中的内容一致

image.png

使用 ReadFile 函数读取文件之后无须关闭文件,因为 ioutil 标准库几乎就是 os 模块的包装器,可以使用极少的代码完成文件读写,而且无须关系操作之后的关闭操作。

文件创建与写入

WriteFile 函数可以写入内容到文件,当文件不存在时可以创建文件,该函数接收三个参数,第一个是文件名,第二个参数是写入内容,第三个参数是文件的权限。

WriteFile 函数写入文件内容也是以字节切片的形式写入的

package main
import (
   "io/ioutil"
   "log"
)
func main(){
   intro := "The Go programming language is an open source project to make programmers more productive."
   err := ioutil.WriteFile("go_intro.txt", []byte(intro), 0777)
   if err != nil {
      log.Fatal(err)
   }
}
复制代码

执行上述代码后,可以发现在项目目录中多处一个 go_intro.txt 文件

image.png

现在我们将写入的目标文件改为已存在的 info.txt,再次执行代码,查看 info.txt 文件

image.png

可以发现,文件内容已经被替换。

WriteFile 函数的第三个参数表示文件的权限,部分常用的权限符号表示和数字表示如下:

权限符号表示 权限数字表示 权限说明
---------- 0000 无权限
-rwx------- 0700 只有所有者能够读取、写入和执行
-rwxrwx--- 0700 所有者及其所在的用户组能够读取、写入和执行
-rwxrwxrwx 0700 所有人都能够读取、写入和执行
---x--x--x 0111 所有人都能够执行
--w--w--w- 0222 所有人都能够写入
--wx-wx-wx 0333 所有人都能够写入和执行
-r--r--r-- 0444 所有人都能够读取
-r-xr-xr-x 0555 所有人都能够读取和执行
-rw-rw-rw- 0666 所有人都能够读取和写入
-rwxr----- 0740 所有者能够读取、写入和执行,而所有者所在的用户组能够读取


相关文章
|
15天前
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
31 7
|
21天前
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
|
23天前
|
算法 大数据 Go
Go文件操作:掌握Go的文件读写与操作技巧
本文介绍了Go语言的文件操作功能,包括文件的打开、读写和关闭。Go语言通过`os`和`io`包提供了丰富的文件操作接口,使开发者能够轻松实现文件的读写和管理。文章详细讲解了核心概念、具体操作步骤和代码示例,并探讨了实际应用场景和未来发展趋势。
|
23天前
|
存储 前端开发 Go
Go 文件的读取操作
本文介绍了 Go 语言标准库中的 `os` 包和 `bufio` 包,重点讲解了 `os` 包中的 `Open` 和 `OpenFile` 函数及 `File` 结构体的 `Read` 方法,以及 `bufio` 包中的 `NewReader` 函数和 `Reader` 结构体的 `ReadString` 方法。通过示例代码展示了如何使用这些方法高效读取文件,减少磁盘操作。
|
29天前
|
Java 大数据 Go
Go语言:高效并发的编程新星
【10月更文挑战第21】Go语言:高效并发的编程新星
49 7
|
1月前
|
Go 数据处理 调度
Go语言中的并发模型:解锁高效并行编程的秘诀
本文将探讨Go语言中独特的并发模型及其在现代软件开发中的应用。通过深入分析 Goroutines 和 Channels,我们将揭示这一模型如何简化并行编程,提升应用性能,并改变开发者处理并发任务的方式。不同于传统多线程编程,Go的并发方法以其简洁性和高效性脱颖而出,为开发者提供了一种全新的编程范式。
|
1月前
|
存储 Go 文件存储
M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
【10月更文挑战第12天】本文详细介绍了如何使用M.2移动硬盘制作Win To Go系统。首先,需准备合适容量与接口类型的M.2硬盘及硬盘盒,并获取Windows镜像文件和分区工具。接着,通过Rufus软件将镜像写入硬盘。文中还提供了分区策略,包括系统分区(约80-120GB)、软件分区(根据需求设定)和数据分区(剩余空间),并指导如何使用DiskGenius或Windows自带工具进行分区。最后,强调了对各分区文件的有效管理和定期备份的重要性。
|
1月前
|
存储 固态存储 Go
M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
【10月更文挑战第11天】Win To Go 是一种将 Windows 系统安装在 M.2 移动硬盘上的技术,便于用户携带自定义系统跨设备使用。需准备高性能 M.2 硬盘及合适硬盘盒,并使用 DiskGenius 或 Rufus 进行分区与系统安装。系统分区用于安装 Windows,其余分区可根据需求存储工作或娱乐文件,便于管理和备份。
141 2
|
1月前
|
并行计算 算法 搜索推荐
探索Go语言的高并发编程与性能优化
【10月更文挑战第10天】探索Go语言的高并发编程与性能优化
|
2月前
|
存储 缓存 Go
go语言编程系列(五)
go语言编程系列(五)