Go-文件
打开文件 关闭文件
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("C:/Users/pc/Desktop/1.txt")
if err != nil {
fmt.Println("err=", err)
}
fmt.Printf("file=%v", file)
err = file.Close()
if err != nil {
fmt.Println("err=", err)
}
}
当不存在文件时
带缓冲的Reader读文件
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("C:/Users/pc/Desktop/1.txt")
if err != nil {
fmt.Println("err=", err)
}
defer file.Close()
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('\n')
if err == io.EOF { //读取到文件的末尾
break
}
fmt.Print(str)
}
fmt.Println("文件读取结束")
}
使用ioutil一次将整个文件读入到内存中
package main
import (
"fmt"
"io/ioutil"
)
func main() {
file := "C:/Users/pc/Desktop/1.txt"
content, err := ioutil.ReadFile(file)
//只适合文件比较小的情况
if err != nil {
fmt.Println("err=", err)
}
fmt.Printf("%v\n", string(content))
fmt.Println("文件读取结束")
}
写文件操作
创建一个新文件,写入内容5句"hello, Gardon"
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filePath := "C:/Users/pc/Desktop/2.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("err=%v\n", err)
return
}
defer file.Close()
str := "hello Gardon\n"
write := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
write.WriteString(str)
}
write.Flush() //将缓存的数据写入到文件中
}
打开一个存在的文件中,将原来的内容覆盖成新的内容10句"你好,尚硅谷!"
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filePath := "C:/Users/pc/Desktop/2.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_TRUNC, 0666)
if err != nil {
fmt.Printf("err=%v\n", err)
return
}
defer file.Close()
str := "你好,尚硅谷!\n"
write := bufio.NewWriter(file)
for i := 0; i < 10; i++ {
write.WriteString(str)
}
write.Flush() //将缓存的数据写入到文件中
}
打开一个存在的文件,在原来的内容追加内容'ABC! ENGLISH!'
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filePath := "C:/Users/pc/Desktop/2.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("err=%v\n", err)
return
}
defer file.Close()
str := "ABC! ENGLISH!\n"
write := bufio.NewWriter(file)
for i := 0; i < 10; i++ {
write.WriteString(str)
}
write.Flush() //将缓存的数据写入到文件中
}
打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句"hello,北京!"
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
filePath := "C:/Users/pc/Desktop/2.txt"
file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("err=%v\n", err)
return
}
defer file.Close()
//读取
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('\n')
if err == io.EOF {
break
}
fmt.Print(str)
}
//写入
str := "hello,北京!\n"
write := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
write.WriteString(str)
}
write.Flush() //将缓存的数据写入到文件中
}
转载请注明出处,欢迎讨论和交流!