Golang 如何读写文件
在Golang中,我们可以使用os
和io/ioutil
两个包来进行文件的读写操作。其中,os
包提供了更底层的系统调用方式,而io/ioutil
则提供了更方便的高层次封装。
读取文件
使用os包
使用os
包读取文件,我们需要先打开文件,然后再从文件中读取数据。以下是一个简单的例子:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
data := make([]byte, 100)
count, err := file.Read(data)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("read %d bytes: %q\n", count, data[:count])
}
在上述代码中,我们打开了一个名为example.txt
的文件,并使用file.Read()
方法从文件中读取了100个字节的数据。读取的数据存储在data
数组中,并返回读取的字节数。在打印读取的数据时,我们只打印了实际读取的字节数。
使用io/ioutil包
在使用io/ioutil
包读取文件时,我们只需要一行代码即可:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data, err := ioutil.ReadFile("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("read %d bytes: %q\n", len(data), data)
}
这里使用了ioutil.ReadFile()
方法从文件中读取数据,读取的数据直接返回的是一个字节数组。
写入文件
使用os包
使用os
包写入文件时,我们需要先创建文件,然后再向其中写入数据。以下是一个例子:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
data := []byte("Hello, World!")
count, err := file.Write(data)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("write %d bytes\n", count)
}
在上述代码中,我们使用os.Create()
方法创建了一个名为example.txt
的文件,并使用file.Write()
方法向其中写入了一个字符串。在打印写入的字节数时,我们只打印了实际写入的字节数。
使用io/ioutil包
在使用io/ioutil
包写入文件时,我们只需要一行代码即可:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data := []byte("Hello, World!")
err := ioutil.WriteFile("example.txt", data, 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("write %d bytes\n", len(data))
}
这里使用了ioutil.WriteFile()
方法将字符串写入文件中。
结论
无论是使用os
包还是io/ioutil
包进行文件读写,都是非常简单的。根据业务需求选择合适的方法即可。