首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(69):临时文件和目录

Go程序例子(69):临时文件和目录

原创
作者头像
用户11078756
发布2025-01-20 11:19:57
发布2025-01-20 11:19:57
4440
举报
文章被收录于专栏:go程序例子go程序例子

在程序执行过程中,我们经常需要创建一些在程序退出后不再需要的数据。临时文件和目录非常适合这种用途,因为它们不会随着时间的推移污染文件系统。

代码语言:go
复制
package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func check(e error) {
    if e != nil {
        panic(e)
    }
}

func main() {
		// 创建临时文件最简单的方法是调用 os.CreateTemp。它会创建一个文件并打开它以进行读写。我们提供 "" 作为第一个参数,因此 os.CreateTemp 会在操作系统的默认位置创建文件。
    f, err := os.CreateTemp("", "sample")
    check(err)
		// 显示临时文件的名称。在基于 Unix 的操作系统上,目录通常是 /tmp。文件名以 os.CreateTemp 的第二个参数作为前缀,其余部分会自动生成,以确保并发调用时始终创建不同的文件名。
    fmt.Println("Temp file name:", f.Name())
		// 在我们完成操作后清理文件。操作系统可能会在一段时间后自动清理临时文件,但显式地执行清理是一个良好的实践。
    defer os.Remove(f.Name())
		// 我们可以向文件中写入一些数据。
    _, err = f.Write([]byte{1, 2, 3, 4})
    check(err)
		// 如果我们打算写入许多临时文件,可能更倾向于创建一个临时目录。os.MkdirTemp 的参数与 CreateTemp 相同,但它返回的是目录名而不是打开的文件。
    dname, err := os.MkdirTemp("", "sampledir")
    check(err)
    fmt.Println("Temp dir name:", dname)

    defer os.RemoveAll(dname)
		// 现在,我们可以通过在临时目录前添加前缀来合成临时文件名。
    fname := filepath.Join(dname, "file1")
    err = os.WriteFile(fname, []byte{1, 2}, 0666)
    check(err)
}

运行结果:

代码语言:javascript
复制
➜ go run temporary-files-and-directories/temporary-files-and-directories.go                 
Temp file name: /var/folders/rz/5ypggxrj4tn_2wxyt7qdl0vc0000gn/T/sample2532823430
Temp dir name: /var/folders/rz/5ypggxrj4tn_2wxyt7qdl0vc0000gn/T/sampledir237796201

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档