os 和 io/ioutil 等标准库,让开发者可以轻松实现文件和目录的操作。本文将以获取当前目录为切入点,介绍一些常用的文件操作方法。文章目录
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.Abs 和 filepath.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)
}以下是一些常见的文件操作及其实现:
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")
}os.File 的 Write 或 WriteString 方法写入内容: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("内容写入成功")
}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))
}os.Remove 删除文件:package main
import (
"fmt"
"os"
)
func main() {
err := os.Remove("test.txt")
if err != nil {
fmt.Println("删除文件失败:", err)
return
}
fmt.Println("文件删除成功")
}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)
}
}os.Mkdir 或 os.MkdirAll 创建目录:package main
import (
"fmt"
"os"
)
func main() {
err := os.Mkdir("mydir", 0755)
if err != nil {
fmt.Println("创建目录失败:", err)
return
}
fmt.Println("目录创建成功:mydir")
}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())
}
}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")
}os、io/ioutil 和 path/filepath 等包极大地简化了文件和目录操作。通过本文介绍的示例,您可以轻松实现以下操作: