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
等包极大地简化了文件和目录操作。通过本文介绍的示例,您可以轻松实现以下操作: