在日常开发中,处理文件和目录是不可避免的任务,尤其是在需要读取、创建或删除文件时,操作目录的能力至关重要。
文章目录
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.Mkdir
或 os.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.Remove
或 os.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("文件写入成功")
}
os
包提供的方法,开发者可以高效地完成各种文件和目录操作。