Skip to main content

Std file

在 Go 语言中,标准库 path/filepath 包提供了一组用于操作文件路径的函数。以下是这些函数的释义及示例代码:

1. func Base(path string) string

返回路径中最后一个元素。如果路径为空字符串,返回 .

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/file.txt"
fmt.Println(filepath.Base(path)) // 输出: file.txt
}

2. func Clean(path string) string

通过处理路径中的 ... 和多余的斜杠,返回规范化后的路径。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/../user/file.txt"
fmt.Println(filepath.Clean(path)) // 输出: /home/user/file.txt
}

3. func Dir(path string) string

返回路径中除去最后一个元素的部分,即路径的目录部分。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/file.txt"
fmt.Println(filepath.Dir(path)) // 输出: /home/user
}

4. func Ext(path string) string

返回路径中文件的扩展名。如果路径中没有扩展名,则返回空字符串。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/file.txt"
fmt.Println(filepath.Ext(path)) // 输出: .txt
}

5. func IsAbs(path string) bool

判断路径是否为绝对路径。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/file.txt"
fmt.Println(filepath.IsAbs(path)) // 输出: true
}

6. func Join(elem ...string) string

将任意数量的路径元素连接成一个单一路径,并返回。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := filepath.Join("/home", "user", "file.txt")
fmt.Println(path) // 输出: /home/user/file.txt
}

7. func Match(pattern, name string) (matched bool, err error)

使用模式匹配路径名。模式可以包含通配符 *?

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
pattern := "*.txt"
name := "file.txt"
matched, err := filepath.Match(pattern, name)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(matched) // 输出: true
}

8. func Split(path string) (dir, file string)

将路径分割成目录和文件名两部分。

示例代码:

package main

import (
"fmt"
"path/filepath"
)

func main() {
path := "/home/user/file.txt"
dir, file := filepath.Split(path)
fmt.Println("Dir:", dir) // 输出: /home/user/
fmt.Println("File:", file) // 输出: file.txt
}

这些函数可以帮助你方便地处理和操作文件路径。希望这些释义和示例代码对你有所帮助!

文件读写代码

当然,这里是一个简单的 Go 语言文件读写示例代码。这个示例代码展示了如何创建一个文件、向文件中写入内容、然后读取文件内容并打印到控制台。

package main

import (
"fmt"
"io/ioutil"
"os"
)

func main() {
// 要写入文件的内容
content := []byte("Hello, World!\n")

// 创建并写入文件
fileName := "example.txt"
err := ioutil.WriteFile(fileName, content, 0644)
if err != nil {
fmt.Println("Error writing to file:", err)
return
}
fmt.Println("File written successfully")

// 读取文件内容
readContent, err := ioutil.ReadFile(fileName)
if err != nil {
fmt.Println("Error reading from file:", err)
return
}

// 打印读取到的内容
fmt.Println("File content:")
fmt.Println(string(readContent))
}

代码说明:

  1. 创建并写入文件:

    • 使用 ioutil.WriteFile 函数创建并写入文件。该函数接受文件名、要写入的内容以及文件权限参数。
    • 如果文件不存在,该函数会创建文件;如果文件已存在,则会覆盖文件的内容。
  2. 读取文件内容:

    • 使用 ioutil.ReadFile 函数读取文件内容。该函数接受文件名作为参数,并返回读取到的字节切片和可能的错误。
    • 将读取到的字节切片转换为字符串并打印出来。

注意事项:

  • ioutil 包在 Go 1.16 之后被标记为过时,建议使用 osio 包中的相关函数来替代。如果你使用的是较新的 Go 版本,可以参考以下使用 osio 包的方式:

使用 osio 包的示例代码:

package main

import (
"fmt"
"io"
"os"
)

func main() {
// 要写入文件的内容
content := []byte("Hello, World!\n")

// 创建并写入文件
fileName := "example.txt"
file, err := os.Create(fileName)
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()

_, err = file.Write(content)
if err != nil {
fmt.Println("Error writing to file:", err)
return
}
fmt.Println("File written successfully")

// 读取文件内容
file, err = os.Open(fileName)
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()

readContent, err := io.ReadAll(file)
if err != nil {
fmt.Println("Error reading from file:", err)
return
}

// 打印读取到的内容
fmt.Println("File content:")
fmt.Println(string(readContent))
}

这个示例代码使用了 os.Create 创建文件,os.Open 打开文件,以及 io.ReadAll 读取文件内容。这样可以避免使用已过时的 ioutil 包。