GO语言基础教程(222)Go文件处理:Go文件操作:从青铜到王者的通关秘籍

Go文件操作全面解析

一、前言:为什么文件操作这么重要?

朋友们,不知道你们有没有经历过这样的绝望:写了几小时代码,结果程序一崩溃,数据全没了!或者好不容易搞定了业务逻辑,却在简单的文件保存上翻了车...

说实话,我刚开始学Go的时候也这样,总觉得文件操作不就是读读写写嘛,能有多难?结果被现实啪啪打脸——文件权限、缓冲区、并发锁、路径处理,哪个都能让你debug到怀疑人生。

但别怕!今天咱们就用最接地气的方式,把Go语言文件处理那点事儿彻底讲明白。我保证,看完这篇,你不仅能避开我踩过的所有坑,还能写出比很多老手更稳健的IO代码!

二、环境准备:咱们的游乐场

在开始“飙车”之前,得先检查下“装备”:

package main

import (
    "fmt"
    "os"
)

func main() {
    // 看看你的Go版本够不够新
    fmt.Println("Go文件操作之旅开始!")
    
    // 创建个临时目录来玩,用完即焚
    tmpDir := "test_files"
    if err := os.MkdirAll(tmpDir, 0755); err != nil {
        panic(fmt.Sprintf("创建目录失败:%v", err))
    }
    fmt.Printf("工作目录已创建:%s\n", tmpDir)
    
    // 程序结束前清理现场
    defer func() {
        os.RemoveAll(tmpDir)
        fmt.Println("临时文件已清理,深藏功与名~")
    }()
}

知识点defer就像是定了个闹钟——“等函数结束后记得打扫房间”。这样即使程序中途崩溃,清理代码也能执行,避免留下垃圾文件。

三、基础篇:文件操作的“十八般武艺”

3.1 创建文件:从零到一的第一步

创建文件听起来简单,但这里面门道可多了:

func basicFileOperations() {
    // 方法1:使用os.Create - 最简单粗暴
    file1, err := os.Create("test_files/example1.txt")
    if err != nil {
        panic(err)
    }
    fmt.Printf("文件1创建成功:%s\n", file1.Name())
    file1.Close() // 用完记得关,不然会内存泄漏!
    
    // 方法2:先检查再创建 - 更稳妥的做法
    filename := "test_files/example2.txt"
    if _, err := os.Stat(filename); err == nil {
        fmt.Println("文件已存在,先删掉旧的")
        os.Remove(filename)
    }
    
    file2, err := os.Create(filename)
    if err != nil {
        panic(err)
    }
    defer file2.Close() // 推荐用defer关闭,避免忘记
    
    fmt.Println("所有文件创建完成!")
}

避坑指南:很多新手会忘记关闭文件,导致文件描述符泄漏。记住Go的黄金法则——有Open就要有Close,用defer最保险!

3.2 写入文件:把你的想法“刻”在磁盘上

现在我们来给文件加点内容:

func writeFileOperations() {
    file, err := os.Create("test_files/write_example.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    
    // 方法1:直接写字符串
    _, err = file.WriteString("你好,这是第一行内容\n")
    if err != nil {
        panic(err)
    }
    
    // 方法2:写字节切片
    content := []byte("这是第二行内容,用字节写入\n")
    _, err = file.Write(content)
    if err != nil {
        panic(err
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值