c++ windows获得当前工作目录文件_Go语言学习基础-文件路径、目录、临时文件和目录...

File Path 文件路径

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

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

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

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

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

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

69d7154c48ae25ebbab9a28ac27b509a.png

结果:

$ 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。

32220909b5b22fdf67d5a7526332a508.png

结果:

$ 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的参数相同,但是它返回一个目录对象,而不是文件对象。

69780aa50f8066ab40a6b752a1a542d2.png

结果:

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

Temp file name: /tmp/sample610887201

Temp dir name: /tmp/sampledir898854668

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值