开发者学堂课程【Go语言核心编程 - 面向对象、文件、单元测试、反射、TCP编程:写文件的四种方式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9730
写文件的四种方式
内容介绍
一、基本应用实例-方式一(2)
二、基本应用实例-方式一(3)
三、基本应用实例-方式一(4)
一、基本应用实例-方式一(2)
打开一个存在的文件中,将原来的内容覆盖成新的内容10句“你好,尚硅谷!”中
代码实现:
新建一个文件:main.go 写一个组函数。
package main
import(
"fmt”
"bufio"
"os"
func main()
//打开一个存在的文件中,将原来的内容覆盖成新的内容10句“你好,尚硅谷!”
此时出现了一个问题,没有换行,就需要修改代码,最终代码完成如下:
//创建一个新文件,写入内容5句“hello, Gardon”
//1.打开文件已经存在文件,d:/abc.txt
filePath:="d:/abc.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY Os.O_TRUNC,0666)
if err != nil [
fmt.Printf("open file err=%v\n", err)
return
//及时关闭 file 句柄
defer file.Close()
//准备写入5句“你好,尚硅谷!”
str :="你好,尚硅谷!\r\n”//\r\n 表示换行
//写入时,使用带缓存的 *Writer
writer := bufio.NewWriter(file)
for i := 0; i< 10;i++【
writer.Writestring(str)
//因为 writer 是带缓存,因此在调用 Writerstring 方法时,其实
//内容是先写入到缓存的,所以需要调用 Flush 方法,将缓冲的数据
//真正写入到文件中,否则文件中会没有数据!!
二、基本应用实例-方式一(3)
打开一个存在的文件,在原来的内容追加内容'ABC!ENGLISH!'
代码实现:
package main
import(
"fmt”
"bufio"
"os"
func main()
//打开一个存在的文件,在原来的内容追加内容‘ABC!ENGLISH!"
//1.打开文件已经存在文件,d/abc.txt
filePath:="d:/abc.txt"
file,er :=os.OpenFile(filePath.b O WRONLY os.O_APPEND,0666)if err !=nil
fmt.Printf("open file err=ovin", err)
retum
//及时关闭 file 句柄
defer file.CloseO
//准备写入5句“你好,尚硅谷!”
str="ABC,ENGLISH!rin"// rn 表示换行
//写入时,使用带缓存的*Witer
writer :=bufio.NewWriter(file
fori:=0;i<10;i++( I
writer.WriteString(str)
//因为 writer 是带缓存,因此在调用 WiterString 方法时,其实
//内容是先写入到缓存的,所以需要调用 Flush 方法,将缓冲的数据
//真正写入到文件中, 否则文件中会没有数据!!!
writer.Flush
三、基本应用实例-方式一(4)
打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句"hello,北京!”
代码实现:
package main
import(
"fmt"
"bufio”
"os"”
"io”
func main() (
//打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句“hello,北京!”
//1.打开文件已经存在文件,d:/abc.txt
filePath:="d:/abc.txt"
file, err := os.OpenFile(filePath, os.O_RDWR os.O_APPEND,0666)if err I= nil f
fmt.Printf("open file err=%v\n", err)
return
//及时关闭 file 句柄
defer file.close()//先读取原来文件的内容,并显示在终端。
reader := bufio.NewReader(file)
for f
str, err := reader.Readstring('\n')
if err == io.EOF //如果读取到文件的末尾
break
//显示到终端
fmt.Print(str)
//准备写入5句“你好,尚硅谷!”
str :="hello,北京!\r\n”//\r\n 表示换行
//写入时,使用带缓存的*Writer
writer := bufio.NewWriter(file)
for i := 0; i< 5; i++
writer.Writestring(str)
//因为 writer 是带缓存,因此在调用 Writerstring 方法时,其实
//内容是先写入到缓存的,所以需要调用 Flush 方法,将缓冲的数据
//真正写入到文件中, 否则文件中会没有数据!!!
writer.Flush