Go语言文件操作涉及包有os
和io
这两个。
使用字节操作读文件:
func readByteFromFile() {
file, err := os.Open("go.mod")
if err != nil {
fmt.Printf("err >> %v\n", err)
}
defer file.Close()
var tmp = make([]byte, 128)
for {
len, err := file.Read(tmp[:])
if err == io.EOF {
break
}
if err != nil {
fmt.Printf("err >> %v\n", err)
}
fmt.Print(string(tmp[:len]))
}
}
使用字符操作读取文件:
func readBuffFromFile() {
file, err := os.Open("go.mod")
if err != nil {
fmt.Printf("err >> %v\n", err)
}
defer file.Close()
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('\n')
if err == io.EOF {
break
}
if err != nil {
fmt.Printf("err >> %v\n", err)
}
fmt.Print(str)
}
}
使用ioutil
读取文件:
func readFileUseUtil() {
str, err := ioutil.ReadFile("go.mod")
if err != nil {
fmt.Printf("err >> %v\n", err)
} else {
fmt.Println(string(str))
}
}
使用File写文件:
func writeStringToFile(content string) (n int, err error) {
file, err := os.OpenFile("demo.txt", os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("err >> %v\n", err)
}
defer file.Close()
return file.WriteString(content)
}
// 调用方式:
n, err := writeStringToFile("Hi Gooooo!")
if err != nil {
fmt.Printf("err >> %v\n", err)
}
fmt.Printf("写入长度n=%d\n", n)