XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

Golang获取当前目录以及常用的文件操作

2025.04.09
在日常开发中,操作文件和目录是一个非常常见的需求。Golang 提供了丰富的 osio/ioutil 等标准库,让开发者可以轻松实现文件和目录的操作。本文将以获取当前目录为切入点,介绍一些常用的文件操作方法。

文章目录

  • 1 一、获取当前目录
  • 2 二、获取文件的所在目录
  • 3 三、常用的文件操作
    • 3.1 I. 创建文件
    • 3.2 II. 写入文件
    • 3.3 III. 读取文件
    • 3.4 IV. 删除文件
    • 3.5 V. 判断文件或目录是否存在
  • 4 四、目录操作
    • 4.1 I. 创建目录
    • 4.2 II. 读取目录内容
    • 4.3 III. 删除目录
  • 5 五、总结

一、获取当前目录

要获取当前工作目录,可以使用 os.Getwd 函数:
package main
import (
"fmt"
"os"
)
func main() {
dir, err := os.Getwd()
if err != nil {
fmt.Println("获取当前目录失败:", err)
return
}
fmt.Println("当前目录是:", dir)
}
  • os.Getwd:返回当前工作目录的绝对路径。
  • 错误处理:如果获取失败,可以通过返回的 error 对象进行处理。

二、获取文件的所在目录

有时需要获取某个文件的绝对路径或其所在目录,可以结合 filepath.Absfilepath.Dir 使用:
package main
import (
"fmt"
"path/filepath"
)
func main() {
filePath := "example.txt"
absPath, err := filepath.Abs(filePath)
if err != nil {
fmt.Println("获取绝对路径失败:", err)
return
}
dir := filepath.Dir(absPath)
fmt.Println("文件的绝对路径是:", absPath)
fmt.Println("文件所在的目录是:", dir)
}

三、常用的文件操作

以下是一些常见的文件操作及其实现:

I. 创建文件

使用 os.Create 创建一个新的文件:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("test.txt")
if err != nil {
fmt.Println("文件创建失败:", err)
return
}
defer file.Close()
fmt.Println("文件创建成功:test.txt")
}

II. 写入文件

可以使用 os.FileWriteWriteString 方法写入内容:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
fmt.Println("打开文件失败:", err)
return
}
defer file.Close()
_, err = file.WriteString("Hello, Golang!\n")
if err != nil {
fmt.Println("写入文件失败:", err)
return
}
fmt.Println("内容写入成功")
}

III. 读取文件

使用 ioutil.ReadFile 读取文件内容:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("test.txt")
if err != nil {
fmt.Println("读取文件失败:", err)
return
}
fmt.Println("文件内容:")
fmt.Println(string(content))
}

IV. 删除文件

使用 os.Remove 删除文件:
package main
import (
"fmt"
"os"
)
func main() {
err := os.Remove("test.txt")
if err != nil {
fmt.Println("删除文件失败:", err)
return
}
fmt.Println("文件删除成功")
}

V. 判断文件或目录是否存在

可以通过 os.Stat 检查文件或目录是否存在:
package main
import (
"fmt"
"os"
)
func main() {
path := "test.txt"
_, err := os.Stat(path)
if os.IsNotExist(err) {
fmt.Println("文件或目录不存在:", path)
} else {
fmt.Println("文件或目录存在:", path)
}
}

四、目录操作

I. 创建目录

使用 os.Mkdiros.MkdirAll 创建目录:
package main
import (
"fmt"
"os"
)
func main() {
err := os.Mkdir("mydir", 0755)
if err != nil {
fmt.Println("创建目录失败:", err)
return
}
fmt.Println("目录创建成功:mydir")
}

II. 读取目录内容

使用 os.ReadDir 列出目录内容:
package main
import (
"fmt"
"os"
)
func main() {
files, err := os.ReadDir(".")
if err != nil {
fmt.Println("读取目录失败:", err)
return
}
for _, file := range files {
fmt.Println(file.Name())
}
}

III. 删除目录

使用 os.Remove 删除目录,或 os.RemoveAll 递归删除目录及其内容:
package main
import (
"fmt"
"os"
)
func main() {
err := os.RemoveAll("mydir")
if err != nil {
fmt.Println("删除目录失败:", err)
return
}
fmt.Println("目录删除成功:mydir")
}

五、总结

Golang 提供的 osio/ioutilpath/filepath 等包极大地简化了文件和目录操作。通过本文介绍的示例,您可以轻松实现以下操作:
  • 获取当前目录和文件路径
  • 创建、读取、写入、删除文件
  • 创建、读取、删除目录
© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB