发布于2026-06-30 阅读(0)
扫一扫,手机访问
说到Golang在Linux环境下的文件操作,其实用标准库就能搞定大部分日常需求。核心工具集中在os和io/ioutil(从Go 1.16起推荐用io和os包替代,但经典用法依然广泛)这两个包里。下面整理了几个最常用的操作场景,代码可以直接拿来用或者稍作调整。

创建一个新文件,如果文件已存在则会清空它。使用os.Create,返回一个文件对象。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("test.txt")
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()
fmt.Println("File created successfully")
}
只读方式打开已有文件,用os.Open。如果想读写或追加,可以改用os.OpenFile配合相应标志位。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
fmt.Println("File opened successfully")
}
一次性读取整个文件到内存,适合小文件。经典写法是ioutil.ReadFile,Go 1.16+推荐用os.ReadFile,但这里保留常用版本方便对照。
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data, err := ioutil.ReadFile("test.txt")
if err != nil {
fmt.Println("Error reading file:", err)
return
}
fmt.Println("File content:", string(data))
}
将字节数据直接写入文件,如果文件不存在则创建,存在则清空后写入。ioutil.WriteFile第三个参数是权限位,Linux下0644表示所有者可读写,其他人只读。
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data := []byte("Hello, Golang!")
err := ioutil.WriteFile("test.txt", data, 0644)
if err != nil {
fmt.Println("Error writing to file:", err)
return
}
fmt.Println("File written successfully")
}
调用os.Remove即可,注意如果文件不存在会返回错误。
package main
import (
"fmt"
"os"
)
func main() {
err := os.Remove("test.txt")
if err != nil {
fmt.Println("Error deleting file:", err)
return
}
fmt.Println("File deleted successfully")
}
用os.Stat获取文件信息,再配合os.IsNotExist判断。这是一个很实用的模式,许多工具类库底层也在用。
package main
import (
"fmt"
"os"
)
func main() {
if _, err := os.Stat("test.txt"); os.IsNotExist(err) {
fmt.Println("File does not exist")
} else {
fmt.Println("File exists")
}
}
这些基本操作覆盖了日常文件处理的大部分场景。实际项目中可能会涉及缓冲区读写、文件权限控制、目录遍历等更高级用法,但底层的逻辑和函数调用方式都一脉相承。复制代码时注意根据Go版本调整包引用路径,比如ioutil在Go 1.16后已标记为废弃,更推荐的写法是os.ReadFile和os.WriteFile,签名完全一致,直接替换即可。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8