GoFrame入门教程 GoFrame gfile-路径操作

2024-02-25 开发教程 GoFrame入门教程 匿名 3

路径操作

Join

  • 说明:将多个字符串路径通过`/`进行连接。
  • 格式:
func Join(paths ...string) string
  • 示例:
func ExampleJoin() {
// init
var (
dirPath = gfile.TempDir("gfile_example_basic_dir")
filePath = "file1"
)
// Joins string array paths with file separator of current system.
joinString := gfile.Join(dirPath, filePath)
fmt.Println(joinString)
// Output:
// /tmp/gfile_example_basic_dir/file1
}

Abs

  • 说明:返回路径的绝对路径。
  • 格式:
func Abs(path string) string
  • 示例:
func ExampleAbs() {
// init
var (
path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
)
// Get an absolute representation of path.
fmt.Println(gfile.Abs(path))
// Output:
// /tmp/gfile_example_basic_dir/file1
}

RealPath

  • 说明:获取给定路径的绝对路径地址。
  • 注意:如果文件不存在则返回空。
  • 格式:
func RealPath(path string) string
  • 示例:
func ExampleRealPath() {
// init
var (
realPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
worryPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "worryFile")
)
// fetch an absolute representation of path.
fmt.Println(gfile.RealPath(realPath))
fmt.Println(gfile.RealPath(worryPath))
// Output:
// /tmp/gfile_example_basic_dir/file1
//
}

SelfName

  • 说明:获取当前运行程序的名称。
  • 格式:
func SelfName() string
  • 示例:
func ExampleSelfName() {
// Get file name of current running process
fmt.Println(gfile.SelfName())
// May Output:
// ___github_com_gogf_gf_v2_os_gfile__ExampleSelfName
}

Basename

  • 说明:获取给定路径中的最后一个元素,包含扩展名。
  • 格式:
func Basename(path string) string
  • 示例:
func ExampleBasename() {
// init
var (
path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
)
// Get the last element of path, which contains file extension.
fmt.Println(gfile.Basename(path))
// Output:
// file.log
}

Name

  • 说明:获取给定路径中的最后一个元素,不包含扩展名。
  • 格式:
func Name(path string) string
  • 示例:
func ExampleName() {
// init
var (
path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
)
// Get the last element of path without file extension.
fmt.Println(gfile.Name(path))
// Output:
// file
}

Dir

  • 说明:获取给定路径的目录部分,排除最后的元素。
  • 格式:
func Dir(path string) string
  • 示例:
func ExampleDir() {
// init
var (
path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
)
// Get all but the last element of path, typically the path's directory.
fmt.Println(gfile.Dir(path))
// Output:
// /tmp/gfile_example_basic_dir
}

Ext

  • 说明:获取给定路径的扩展名,包含`.`。
  • 格式:
func Ext(path string) string
  • 示例:
func ExampleExt() {
// init
var (
path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
)
// Get the file name extension used by path.
fmt.Println(gfile.Ext(path))
// Output:
// .log
}

ExtName

  • 说明:获取给定路径的扩展名,不包含`.`。
  • 格式:
func ExtName(path string) string
  • 示例:
func ExampleExtName() {
// init
var (
path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
)
// Get the file name extension used by path but the result does not contains symbol '.'.
fmt.Println(gfile.ExtName(path))
// Output:
// log
}

MainPkgPath

  • 说明:获取main文件(主入口)所在的绝对路径,。
  • 注意:
    • 该方法仅在开发环境中可用,同时仅在源代码开发环境中有效,build二进制后将显示源代码的路径地址。
    • 第一次调用该方法时,如果处于异步的goroutine中,可能会无法获取主包的路径
  • 格式:
func MainPkgPath() string
  • 示例:
func Test() {
fmt.Println("main pkg path on main :", gfile.MainPkgPath())
char := make(chan int, 1)
go func() {
fmt.Println("main pkg path on goroutine :", gfile.MainPkgPath())
char <- 1
}()
select {
case <-char:
}
// Output:
// /xxx/xx/xxx/xx
// /xxx/xx/xxx/xx
}
// 二进制包
$ ./testDemo
main pkg path on main : /xxx/xx/xxx/xx
main pkg path on goroutine : /xxx/xx/xxx/xx