File Path 文件路径

filepath包提供了解析和构造文件路径的函数,这种方法在操作系统之间是兼容的;例如,Linux上的dir/file与Windows上的dirfile都可以有效识别。

使用Join方法构造路径,它接受任意数量的参数来构造路径的层次结构。应该始终使用Join方法连接路径,而不是手动连接。除了提供兼容性外,Join方法还将通过删除多余的分隔符和目录规范路径。

Dir函数和Base函数可用于分割指路径为目录和文件名。函数Split则则可以同时返回两者。

我们可以检查路径是否为绝对路径。

某些文件名带有扩展名,可以使用函数Ext将扩展名从文件名中分离出来。通过删除扩展名获得文件基名,请使用strings.TrimSuffix。

函数Rel在两个目标之间查找相对路径,如果没有,则返回一个错误。

结果:

$ go run file-paths.go

p: dir1/dir2/filename

dir1/filename

dir1/filename

Dir(p): dir1/dir2

Base(p): filename

false

true

.json

config

t/file

../c/t/file

Directorie 目录

Go有几个有用的函数来处理文件系统中的目录。

函数os.Mkdir在当前工作目录中创建一个新的子目录。如果是临时目录,最好推迟删除它们,函数os.RemoveAll将删除整个目录树(类似于rm -rf)。

ioutil.WriteFile函数创建新的空文件。

我们可以创建目录层次结构,函数os.MkdirAll创建路径上的所有目录,这与命令行mkdir -p类似。

函数ioutil.ReadDir列出目录内容,返回os.FileInfo对象列表的切片。

函数os.Chdir允许我们更改当前工作目录,类似于命令行cd。

我们还可以递归地访问目录,包括所有子目录。函数filepath.Walk的回调函数用于处理访问的每个文件或目录,程序中filepath.Walk递归地为每个文件或目录调用visit。

结果:

$ go run directories.go

Listing subdir/parent

child true

file2 false

file3 false

Listing subdir/parent/child

file4 false

Visiting subdir

subdir true

subdir/file1 false

subdir/parent true

subdir/parent/child true

subdir/parent/child/file4 false

subdir/parent/file2 false

subdir/parent/file3 false

Temporary File and Directorie 临时文件和目录

在程序执行过程中,我们通常希望创建一在程序退出后不需要的数据。临时文件和目录对于这个目的很有用,因为它们在程序使用过后不会污染文件系统。

创建临时文件最简单的方法是调用ioutil.TempFile,它创建并打开一个文件进行读写。第一个参数为空字符串"",因此ioutil.TempFile将在操作系统的默认位置创建临时文件。

方法Name显示临时文件的名称。

在类Unix系统,临时目录可能是/tmp。ioutil.TempFile的第二个参数为临时文件名的前缀,其余部分则自动产生,以确保并发创建时始终使用不同的文件名。

os.Remove推迟调用用于在使用完临时数据后清理文件。操作系统很可能会在一段时间后自行清理临时文件,但最好显式地这样做。

方法Write向文件中写入一些数据。

如果要创建许多临时文件,则可以创建一个临时目录用于放置它们。ioutil.TempDir的参数与ioutil.TempFile的参数相同,但是它返回一个目录对象,而不是文件对象。

结果:

$ go run temporary-files-and-directories.go

Temp file name: /tmp/sample610887201

Temp dir name: /tmp/sampledir898854668

临时文件_Go语言学习基础-文件路径、目录、临时文件和目录相关推荐

  1. .dat文件写入byte类型数组_Go语言学习基础-读文件、写文件、行过滤器

    Reading File 读文件 读写文件是许多Go程序所需的基本任务.首先,我们将看一些读取文件的示例.读取文件需要检查是否出现调用错误. 最基本的文件读取任务是将文件的全部内容读到内存中iouti ...

  2. go var 一个整数_Go语言学习基础-值、变量、常量

    Hello world 第一个程序是打印经典的"hello world"信息.保存为hello-world.go文件,在命令行中使用go run命令运行程序.若要构建为二进制文件, ...

  3. go定时器 每天重复_Go语言学习基础-定时器、计时器

    Timer计时器 如果希望在将来的某个时间点执行Go代码,或者在某个时间间隔重复执行Go代码,使用Go内置的timer和ticker功能. 先看定时器timer,然后再看计时器ticker.定时器代表 ...

  4. Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

    Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码 目录 文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

  5. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  6. Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略

    Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略 目录 Python与文件夹那些事 1.创建/删除文件/文件夹 1.创建文件夹

  7. 用C语言编写从A到Z随机步法,实用C语言程序设计教程1C语言学习基础ppt71.ppt

    实用C语言程序设计教程1C语言学习基础ppt71 C语言程序设计 - 第1章 C语言学习基础 第1章 开篇 --C语言学习基础 --目标既不是精确的,也不是预先设定的,目标应是一般性的.生成性的,从而 ...

  8. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  9. C语言学习笔记---文件操作 fopen()函数 和 fclose()函数

    fopen()函数   在C语言中fopen()函数用来打开文件.该函数声明在stdio.h中.它的第一个参数是待打开文件的名称,更确切的说是一个包含文件名的字符串地址.第二个参数是一个字符串,指定待 ...

最新文章

  1. [转]C#日期格式化 文档
  2. winpcap4.1.2手动清理关键
  3. 1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】
  4. ITK:将真实和虚构图像转换为复杂图像
  5. pytorch 正向与反向传播的过程 获取模型的梯度(gradient),并绘制梯度的直方图
  6. php匿名类的应用场景,【modernPHP专题(9)】匿名类
  7. 牛客 牛牛做除法II
  8. 大学python期末考试突击怎么办_Python突击-从入门到精通到项目实战
  9. Java基础入门笔记-包装类
  10. 软件工程 - 版本管理 - git 的常用方法实例
  11. 2.9 iframe
  12. C#不同窗体间通信,数据传递
  13. 使用正则表达式从字符串中提取email
  14. Courier:Dropbox 基于gRPC 的 RPC 框架开发过程
  15. 工厂设计模式——抽象工厂
  16. html中心点缩放,html canvas 让物体随物体中心缩放
  17. 解决办法:std没有成员initializer_list
  18. XML安全之Web Services
  19. 2022年最佳的9种逆向工程工具[持续更新]
  20. 图片的灰度处理(Unity Shader)

热门文章

  1. thinkphp v5.0.24 密码爆破_轻松搭建基于 Serverless 的 ThinkPHP 应用
  2. 作者:高丰(1986-),英国南安普敦大学计算机博士,现为开放数据与创新独立咨询顾问,兼复旦大学数字与移动治理实验室特邀研究员。...
  3. 作者:林立,华中科技大学计算机科学与技术学院讲师。
  4. 【操作系统】常见进程调度算法特点总结比较
  5. 【OJ】2020蓝桥杯模拟赛题解(Java语言描述)
  6. 【数据库系统】SQL查询的注意事项
  7. 【数据结构与算法】判断两个无环单链表是否相交的算法
  8. 【面向对象】面向对象程序设计测试题2-Java基本语法测试题
  9. 【VB.NET】VB.NET基本数据类型
  10. SAP创建新的项目类型