一、os包的文件操作
在Go语言中,os
包提供了与操作系统进行交互的功能,其中包括文件和目录的创建、打开、读取、写入等操作。
1、文件和目录的创建
创建目录
package main
import (
"os"
)
func main() {
err := os.Mkdir("example_dir", 0755)
if err != nil {
panic(err)
}
}
解释
:
这个例子中,os.Mkdir
函数用于创建一个名为 “example_dir” 的目录,0755是目录的权限。
创建文件
package main
import (
"os"
)
func main() {
file, err := os.Create("example_file.txt")
if err != nil {
panic(err)
}
defer file.Close()
}
解释
:
这个例子中,os.Create
函数用于创建一个名为 “example_file.txt” 的文件,并通过defer
语句确保在程序退出前关闭文件。
2、文件的读写操作
写入文件
package main
import (
"os"
"fmt"
)
func main() {
file, err := os.Create("example_file.txt")
if err != nil {
panic(err)
}
defer file.Close()
data := []byte("Hello, Go!")
_, err = file.Write(data)
if err != nil {
panic(err)
}
}
解释
:
这个例子中,使用file.Write
函数将字符串 “Hello, Go!” 写入到文件中。
读取文件
package main
import (
"os"
"fmt"
"io/ioutil"
)
func main() {
file, err := os.Open("example_file.txt")
if err != nil {
panic(err)
}
defer file.Close()
data, err := ioutil.ReadAll(file)
if err != nil {
panic(err)
}
fmt.Println(string(data))
}
解释
:
这个例子中,使用os.Open
打开文件,然后使用ioutil.ReadAll
读取文件中的全部内容,并将内容打印到控制台。
二、ioutil包
在Go语言中,ioutil
包提供了一些方便的函数,用于简化文件的读取和写入操作。
1、读取整个文件
读取文件内容
package main
import (
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("example_file.txt")
if err != nil {
panic(err)
}
fmt.Println(string(content))
}
解释
:
这个例子中,ioutil.ReadFile
函数用于读取文件 “example_file.txt” 的全部内容,并将内容作为字节切片返回。通过string(content)
将字节切片转换为字符串并打印到控制台。
2、写入整个文件
写入文件内容
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data := []byte("Hello, ioutil!")
err := ioutil.WriteFile("example_ioutil.txt", data, 0644)
if err != nil {
panic(err)
}
fmt.Println("File written successfully.")
}
解释
:
这个例子中,ioutil.WriteFile
函数用于将字节切片内容写入到文件 “example_ioutil.txt” 中,0644是文件的权限。如果文件不存在,则会创建文件;如果文件已存在,则会截断文件内容。
3、读取目录内容
读取目录中的文件列表
package main
import (
"fmt"
"io/ioutil"
)
func main() {
files, err := ioutil.ReadDir("example_dir")
if err != nil {
panic(err)
}
fmt.Println("Files in directory:")
for _, file := range files {
fmt.Println(file.Name())
}
}
解释
:
这个例子中,ioutil.ReadDir
函数用于读取目录 “example_dir” 中的文件列表,并通过循环打印每个文件的名称。