XuLaLa.Tech

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

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

2025.04.09

在日常开发中,处理文件和目录是不可避免的任务,尤其是在需要读取、创建或删除文件时,操作目录的能力至关重要。

文章目录

  • 1 一、获取当前工作目录
  • 2 二、切换工作目录
  • 3 三、创建目录
  • 4 四、删除目录
  • 5 五、遍历目录内容
  • 6 六、检查文件或目录是否存在
  • 7 七、文件操作示例
  • 8 八、总结

一、获取当前工作目录

Golang 提供了内置的 os 包来处理操作系统相关的功能,获取当前工作目录的方法如下:
package main
import (
"fmt"
"os"
)
func main() {
// 获取当前工作目录
dir, err := os.Getwd()
if err != nil {
fmt.Println("获取工作目录失败:", err)
return
}
fmt.Println("当前工作目录是:", dir)
}
os.Getwd() 方法返回当前工作目录的路径,如果发生错误,将返回一个非空的 error

二、切换工作目录

在某些场景下,我们可能需要临时更改工作目录,例如处理某个特定文件夹下的文件:

func changeDir(path string) {
err := os.Chdir(path)
if err != nil {
fmt.Println("切换工作目录失败:", err)
return
}
fmt.Println("切换到新工作目录:", path)
}
通过 os.Chdir 可以改变当前的工作目录。

三、创建目录

可以使用 os.Mkdiros.MkdirAll 来创建目录:
  • os.Mkdir:只能创建单级目录。
  • os.MkdirAll:可以递归创建多级目录。

示例代码:

func createDir() {
err := os.Mkdir("testDir", 0755) // 单级目录
if err != nil {
fmt.Println("创建目录失败:", err)
return
}
fmt.Println("单级目录创建成功")
err = os.MkdirAll("parentDir/childDir", 0755) // 多级目录
if err != nil {
fmt.Println("创建多级目录失败:", err)
return
}
fmt.Println("多级目录创建成功")
}

四、删除目录

删除目录时,可以使用 os.Removeos.RemoveAll
  • os.Remove:只能删除空目录。
  • os.RemoveAll:可以递归删除非空目录及其内容。

示例代码:

func deleteDir() {
err := os.Remove("testDir") // 删除单级空目录
if err != nil {
fmt.Println("删除目录失败:", err)
return
}
fmt.Println("目录删除成功")
err = os.RemoveAll("parentDir") // 删除多级目录及其内容
if err != nil {
fmt.Println("递归删除目录失败:", err)
return
}
fmt.Println("递归删除成功")
}

五、遍历目录内容

使用 os.ReadDir 可以列出目录中的所有文件和子目录:
func listDir(path string) {
entries, err := os.ReadDir(path)
if err != nil {
fmt.Println("读取目录失败:", err)
return
}
for _, entry := range entries {
fmt.Printf("Name: %s, IsDir: %t\n", entry.Name(), entry.IsDir())
}
}

六、检查文件或目录是否存在

可以通过 os.Stat 方法来检查某个路径是否存在:
func exists(path string) bool {
_, err := os.Stat(path)
return !os.IsNotExist(err)
}

七、文件操作示例

创建文件
func createFile() {
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("文件创建失败:", err)
return
}
defer file.Close()
fmt.Println("文件创建成功:", file.Name())
}
删除文件
func deleteFile() {
err := os.Remove("example.txt")
if err != nil {
fmt.Println("文件删除失败:", err)
return
}
fmt.Println("文件删除成功")
}
读取文件内容
import (
"fmt"
"io/ioutil"
)
func readFile() {
content, err := ioutil.ReadFile("example.txt")
if err != nil {
fmt.Println("读取文件失败:", err)
return
}
fmt.Println("文件内容:", string(content))
}
写入文件
import (
"os"
)
func writeFile() {
err := os.WriteFile("example.txt", []byte("Hello, Golang!"), 0644)
if err != nil {
fmt.Println("写入文件失败:", err)
return
}
fmt.Println("文件写入成功")
}

八、总结

本文介绍了 Golang 中处理工作目录的常见操作,包括获取、切换、创建、删除目录,以及文件的基础操作。通过合理使用 os 包提供的方法,开发者可以高效地完成各种文件和目录操作。
© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB