Golang 操作临时文件和目录
Golang 操作临时文件和目录
本文学习Go1.11 版本带来的新功能,ioutil
包中提供的TempFile 和 TempDir
函数用于创建临时文件和目录。其创建的临时文件和目录名称是全局唯一,且方式非常简单。
1. 临时文件
首先使用 TempFile
函数创建临时文件。假设我们正在创建对象识别系统,需要很多图片作为训练集。对于每个汽车图片,我们创建一个临时文件,无需担心文件名称重复。
package mainimport ("fmt""ioutil""os"
)func main() {// ioutil.TempFile 返回文件和错误// 这里指定目录car-images 和 文件名称格式 car-*.pngfile, err := ioutil.TempFile("car-images", "car-*.png")if err != nil {fmt.Println(err)}// 确保程序结束时删除临时文件defer os.Remove(file.Name())// 打印创建的临时文件名称fmt.Println(file.Name())
}
运行程序,输出如下:
car-images\car-345523891.png
我们看到自动替换了文件名称中的 *
号,使用了一个随机数字。
2. 写临时文件
如果需要写数据至临时文件,使用 write
函数:
package mainimport ("fmt""ioutil""os"
)func main() {// ioutil.TempFile 返回文件和错误// 这里指定目录car-images 和 文件名称格式 car-*.pngfile, err := ioutil.TempFile("car-images", "car-*.png")if err != nil {fmt.Println(err)}// 确保程序结束时删除临时文件defer os.Remove(file.Name())// 写 hello world\n if _, err := file.Write([]byte("hello world\n")); err != nil {fmt.Println(err)}data, err := ioutil.ReadFile(file.Name())// 如果程序不能读文件打印错误原因if err != nil {fmt.Println(err)}// 如果读取成功打印内容fmt.Print(string(data))
}
上面往临时文件中写入hello world,然后读取并打印验证。
运行程序输出:
hello world
3. 创建临时目录
上面创建了临时文件,现在我们学习如何创建临时目录。对于我们上面提及的对象识别系统,可能需要创建临时目录存放非汽车的其他物品。这里扩展上面的示例,创建临时目录,然后在目录中创建临时文件:
package mainimport ("fmt""io/ioutil""os"
)func main() {tempDir, err := ioutil.TempDir("", "cars-")if err != nil {fmt.Println(err)}defer os.RemoveAll(tempDir)file, err := ioutil.TempFile(tempDir, "car-*.png")if err != nil {fmt.Println(err)}defer os.Remove(file.Name())// 打印文件的完整名称fmt.Println(file.Name())if _, err := file.Write([]byte("hello world\n")); err != nil {fmt.Println(err)}data, err := ioutil.ReadFile(file.Name())// 如果程序不能读文件打印错误原因if err != nil {fmt.Println(err)}// 如果读取成功打印内容fmt.Print(string(data))
}
运行程序,我们能看到创建了全局唯一目录和临时文件名称,运行结果:
C:\Users\ADMINI~1\AppData\Local\Temp\cars-604917127\car-281252154.png
hello world
4. 总结
本文学习了ioutil
包中提供的TempFile 和 TempDir
函数,可以非常简单地创建临时文件和目录。
Golang 操作临时文件和目录相关推荐
- 在linux系统下使用C语言操作临时文件
有时程序需要存储很大量的数据,或者在几个进程间交换数据,这时您可能考虑到使用临时文件.使用临时文件要考虑几个问题: 1.保证临时文件间的文件名不互助冲突. 2.保证临时文件中内容不被其他用户或者黑客偷 ...
- golang操作mongodb的驱动mongo-go-driver的事务支持和访问控制(mongodb4.0)
关注公众号 风色年代(itfantasycc) 300G微服务资料等你拿! 作者: sdghchj 本文链接:golang操作mongodb的驱动mongo-go-driver的事务支持和访问控制_s ...
- Python 生成临时文件和目录 -tempfile
请看代码:官方文档 详见 tempfile- 生成临时文件和目录 >>> import tempfile# create a temporary file and write som ...
- 操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构
操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构 基本概念 一.文件概念: 1.文件 ...
- python操作文件和目录_Python操作文件和目录
Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...
- golang操作文件
看一下golang操作文件的测试代码. package mainimport ("fmt""os" )//O_CREATE func main() {f, er ...
- golang操作mysql用例
❤️强烈推荐人工智能学习网站❤️ golang操作mysql的demo,直接上代码 package mainimport ("database/sql""fmt" ...
- golang mysql商业用例_完美起航-golang操作mysql用例
golang操作mysql的demo,直接上代码 package main import ( "database/sql" "fmt" _ "gith ...
- 三十四 操作文件和目录
如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...
- golang操作postgresql数据库jsonb类型
golang操作postgresql数据库jsonb类型 本文以案例为主,少言,自悟. 推荐一个测试sql的网站 SQL操作 // 创建一个带有jsonb列的表 CREATE TABLE items ...
最新文章
- hadoop fs命令无法使用_「大数据」「Hadoop」HDFS的配置与管理
- php的htaccess,.htaccess
- SAP WM Production Schedule Profile设置问题导致生产补货的TO单自动创建问题
- 7开启uasp协议_【环海解读】新版通关无纸化协议签约amp;报关代理委托发起和确认操作流程...
- IntelliJ IDEA for Mac 如何自定义快捷键_设置快捷键
- android 点击热区,增大UIButton的点击热区
- oracle-01122,oracle ORA-01200ORA-01110ORA-01122
- [礼仪大赛常识]酒店客房服务礼仪
- 毕业设计-智能自选综合商城设计(毕业设计源码+系统+文档+部署)
- DQN_Continuous_Action
- iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码
- 考研路上的那些一战二战三战成功与失败的故事系列之十三
- idea 自动同步文件本地内容设置
- matlab stats里的f值,MATLAB 回归分析regress,nlinfit,stepwise函数
- .Net asp.net MVC 实现短信验证
- Linux下穿件带点文件夹和隐藏文件显示隐藏文件命令
- OSPF邻居震荡抑制
- JAVA 实现MD5加密算法
- 思科设备操作命令(CISCO IOS)
- C++围棋小游戏1.2.2
热门文章
- android 渠道包 作用,谈谈我的Android多渠道打包方式
- 使用cecil 完毕 code injection
- 图嵌入综述整理(上)
- el-cascader级联选择器当子节点的children为空数组的话,有bug(前端解决办法)
- ICGC:国际肿瘤基因组协会简介
- P1084 [NOIP2012 提高组] 疫情控制
- 解决工商银行网银插件报‘非正常运行的网银工具’问题
- 如何用 Python 和 Pandas 分析犯罪记录开放数据?
- STM32涉及到的汇编基础知识
- 无线通信基础知识13:数字通信之信道编码