Go标准库学习笔记-跨平台文件路径(filepath)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/preyta/article/details/80854571

概述

filepath包的功能和path包类似,但是对于不同操作系统提供了更好的支持。filepath包能够自动的根据不同的操作系统文件路径进行转换,所以如果你有跨平台的需求,你需要使用filepath

path包相同的函数

filepath包中的函数和path包很类似,其中对应函数的功能相同,只是一个可以跨平台,一个不能,所以这里不详细展开,可以从 path 中获取这些函数的详细说明。主要函数如下:

  • func Base(path string) string
  • func Dir(path string) string
  • func Ext(path string) string
  • func Join(elem …string) string
  • func Split(path string) (dir, file string)

其他函数

剩下的还有两个函数值得一说,一个是Abs函数,可以将一个文件路径转换为绝对路径。函数声明如下:

func Abs(path string) (string, error)

另一个是Walk函数,和filepath包中的其他函数不同,它并不对文件路径字符串进行操作,而可以访问更多文件信息。它通过遍历的方式对目录中的每个子路径进行访问,函数接收两个参数,一个是路径名,另一个是遍历函数WalkFunc,函数声明如下:

func Walk(root string, walkFn WalkFunc) error

type WalkFunc func(path string, info os.FileInfo, err error) error

WalkFunc接收三个参数,分别是当前子路径,路径的FileInfo对象,以及一个可能的访问错误信息。下面是一个简单的示例,打印了当前目录的所有文件。

package main

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

func main() {

    filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }
        fmt.Println(info.Name())
        return nil
    })
}

更多GO标准库内容见 go-doc-zh

猜你喜欢

转载自blog.csdn.net/preyta/article/details/80854571