写文件的四种方式 | 学习笔记

简介: 快速学习写文件的四种方式

开发者学堂课程【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

相关文章
|
22天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
40 2
|
6月前
|
C语言
C 语言文件处理全攻略:创建、写入、追加操作解析
在 C 语言中,您可以通过声明类型为 FILE 的指针,并使用 fopen() 函数来创建、打开、读取和写入文件:
223 0
|
存储 NoSQL 算法
文件上传下载系列——如何实现文件秒传
文件上传下载系列——如何实现文件秒传
|
C++
19.【c++基础篇.三个文件实现】
19.【c++基础篇.三个文件实现】
77 0
|
存储 缓存 安全
php开发实战分析(5):文件和目录的操作
php开发实战分析(5):文件和目录的操作
134 0
|
前端开发 开发者
评论列表案例-演示艾特符号替代相对路径的好处|学习笔记
快速学习评论列表案例-演示艾特符号替代相对路径的好处
453 0
|
开发者 Python Windows
文件的读取方式 | 学习笔记
快速学习 文件的读取方式
文件的读取方式 | 学习笔记
HDFSAPI编程源码-文件创建操作
HDFSAPI编程源码-文件创建操作
|
网络协议 程序员 测试技术
管道的注意事项和细节(2)|学习笔记
快速学习管道的注意事项和细节(2),使用 select 可以解决从管道取数据的阻塞问题【案例演示】 我们在管道读取数据的时候要 close 管道,如果没有关闭,这个时候他会阻塞,而且会发生死锁,但有些情况如想在不想关闭的情况下也不被阻塞的话,我们就要使用 select
管道的注意事项和细节(2)|学习笔记
|
网络协议 测试技术 Go
管道的注意事项和细节(3)|学习笔记
快速学习管道的注意事项和细节(3)