当前位置: 首页 > news >正文

Go Lang语言实现文件的写入、追加、读取、复制等操作

/*
Go语言的 os 包下有一个 OpenFile 函数,其原型如下所示:
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体路径;flag 是文件的处理参数,为 int 类型,根据系统的不同具体值可能有所不同,但是作用是相同的。
*/package mainimport ("bufio""fmt""io""io/ioutil""os"
)func main() {write_demo1()  // 1. 创建一个新文件 demo.txt,并在其中写入 5 句“baidu.com”write_demo2()  // 2. 打开一个存在的文件,在原来的内容最前面追加内容 “我是百度”write_demo3()  // 3. 打开一个存在的文件,将原来的内容读出来,显示在终端,并且在原内容的末尾追加 5 句“我是国产货”。write_demo4()  // 4. 将一个文件的内容复制到另外一个文件(注:这两个文件都已存在)
}/** 1. 创建一个新文件 demo.txt,并在其中写入 5 句“baidu.com”*/
func write_demo1() {//创建一个新文件,写入内容 5 句 “baidu.com”filePath :=  "demo.txt"file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)if err != nil {fmt.Println( "文件打开失败" , err)}//及时关闭file句柄defer file.Close()//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString( "baidu.com \n" )}//Flush将缓存的文件真正写入到文件中write.Flush()}/** 2. 打开一个存在的文件,在原来的内容追加内容 “我是百度”*/
func write_demo2() {filePath :=  "demo.txt"file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)if err != nil {fmt.Println( "文件打开失败" , err)}//及时关闭file句柄defer file.Close()//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString( "我是百度 \r\n" )}//Flush将缓存的文件真正写入到文件中write.Flush()
}/** 3. 打开一个存在的文件,将原来的内容读出来,显示在终端,并且追加 5 句“我是国产货”。*/
func write_demo3() {filePath :=  "demo.txt"file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)if err != nil {fmt.Println( "文件打开失败" , err)}//及时关闭file句柄defer file.Close()//读原来文件的内容,并且显示在终端reader := bufio.NewReader(file)for {str, err := reader.ReadString( '\n' )if err == io.EOF {break}fmt.Print(str)}//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString( "我是国产货。 \r\n" )}//Flush将缓存的文件真正写入到文件中write.Flush()
}/** 4. 将一个文件的内容复制到另外一个文件(注:这两个文件都已存在)*/
func write_demo4() {file1Path :=  "demo.txt"file2Path :=  "demo_bak.txt"data, err := ioutil.ReadFile(file1Path)if err != nil {fmt.Printf( "文件打开失败=%v\n" , err)return}err = ioutil.WriteFile(file2Path, data, 0666)if err != nil {fmt.Printf( "文件打开失败=%v\n" , err)}
}

 

http://www.jsqmd.com/news/407316/

相关文章:

  • FreeRtos——7、时序模型:软定时器与中断的“底半部”机制
  • 论文降重工具怎么选?一篇看懂,不花冤枉钱
  • 年后天猫超市卡回收怎么选?避开骗局,安全变现不踩雷 - 团团收购物卡回收
  • 国产降AI工具哪家强?4款主流软件全面盘点
  • 理工科论文降AI怕改坏公式?这两款工具术语保护最强
  • 2026建筑模板厂家推荐:五大品牌深度解析,高适配工程采购需求 - 深度智识库
  • 2026月饼专用设备供应商排名 覆盖全机型适配推荐 - 包罗万闻
  • 不同情况用不同降AI工具!一张表帮你选对
  • 2026上半年软考:网络工程师高频考点,考生朋友速记!
  • 年后清理抽屉:天猫超市卡闲置不用,这样处理最划算 - 团团收购物卡回收
  • 2026年闸阀厂家推荐:偏心旋转阀、多通径球阀、智能切断阀、罐底球阀、自力式控制阀、衬塑球阀、衬塑阀选择指南 - 优质品牌商家
  • 2026年降AI工具TOP4排行榜:实测数据说话
  • 年后盒马鲜生礼品卡闲置不用?这样处理安全又省心 - 团团收购物卡回收
  • 畅回收是靠谱的吗? - 畅回收小程序
  • DeepSeek 广告服务商推荐, GEO 优化服务商盘点 - 品牌2025
  • 年后闲置天猫超市卡别浪费,3 种安全变现方法全攻略 - 团团收购物卡回收
  • 写作小白救星!千笔,实力封神的降AIGC软件
  • 降AI和降重能同时做吗?两不误的工具推荐
  • 2026年数控滚丝机厂家口碑排行,助您明智选择,滚丝机 /滚牙机 /二轮滚丝机 ,数控滚丝机厂家推荐排行榜单 - 品牌推荐师
  • 2026别错过!全网顶尖的降AI率软件 —— 千笔·降AIGC助手
  • 2026出行订票平台实用对比 从比价保价到积分兑换怎么选 - 速递信息
  • 文科论文降AI难度更大?文科生选降AI工具的3个要点
  • 2026最新按摩椅品牌排行榜,十大品牌与明星产品全揭秘! - 速递信息
  • openClaude简要介绍、接入钉钉
  • 建议收藏|9个AI论文写作软件深度测评,本科生毕业论文+科研写作必备
  • 降AI一次没降下来?二次降AI选对工具很关键
  • tomcat启动时错误java.net.BindException: Address already in use: JVM_Bind
  • 【完整源码+数据集+部署教程】芒果叶片损伤分类图像分割系统源码&数据集分享 [yolov8-seg-CSwinTransformer&yolov8-seg-C2f-FocusedLinearAtte
  • hashmap的底层实现原理
  • vue 表格 vxe-table 实现复制单元格时自动带表头