首页 > 其他分享 >Go Lang语言实现文件的写入、追加、读取、复制等操作

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

时间:2024-08-21 11:53:29浏览次数:3  
标签:Lang 文件 读取 err 写入 write file Go os

/*
Go语言的 os 包下有一个 OpenFile 函数,其原型如下所示:
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体路径;flag 是文件的处理参数,为 int 类型,根据系统的不同具体值可能有所不同,但是作用是相同的。
*/

package main

import (
	"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()
	//写入文件时,使用带缓存的 *Writer
	write := 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()
	//写入文件时,使用带缓存的 *Writer
	write := 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)
	}
	//写入文件时,使用带缓存的 *Writer
	write := 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)
	}
}

 

标签:Lang,文件,读取,err,写入,write,file,Go,os
From: https://www.cnblogs.com/codtina/p/18371323

相关文章

  • go的链式方法
    func(r*Request)Name(resourceNamestring)*Request{ifr.err!=nil{returnr}iflen(resourceName)==0{r.err=fmt.Errorf("resourcenamemaynotbeempty")returnr}iflen(r.resourceName)!=0{......
  • 【2】Kaggle 医学影像数据读取
    赛题名称:RSNA2024LumbarSpineDegenerativeClassification中文:腰椎退行性病变分类kaggle官网赛题链接:https://www.kaggle.com/competitions/rsna-2024-lumbar-spine-degenerative-classification/overview文章安排①、如何用python读取dcm/dicom文件②、基于matplotlib......
  • go 面试资料整理
    go语言基础熟悉语法,撸个百十道基础面试题就差不多了。go语言进阶go中有哪些锁?sync.Mutex互斥锁sync.RWMutex读写锁CSP并发模型?CSP并发模型它并不关注发送消息的实体,而关注的是发送消息时使用的channel,go语言借用了proce......
  • 回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM 多特征输入单
    回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM多特征输入单输出高引用先用先创新文章目录前言回归预测|基于北方苍鹰优化支持向量机的数据回归预测Matlab程序NGO-SVM多特征输入单输出高引用先用先创新一、NGO-SVM模型1.北方苍鹰优化算......
  • 计算机毕业设计-基于Python+Django的基于知识图谱的医疗问答系统项目开发实战(附源码+
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • 手把手教你用Go开发客户端软件(使用Go + HTML)
    开发桌面客户端软件一直是程序员的常见任务之一,而Go语言凭借其简洁、高效以及丰富的第三方库,越来越多地被用于开发各类应用程序。今天我们将结合Go语言和HTML,使用开源项目Sciter的Go绑定库go-sciter,为大家展示如何用最少的开发精力构建一个跨平台的桌面客户端。什么是......
  • 用友crm客户关系管理help.php存在任意文件读取漏洞
    产品介绍:用友U8CRM模块是一个综合性的客户关系管理系统,旨在帮助企业从客户出发,以客户关系为管理对象,通过动态管理客户信息、获得客户知识和评判客户价值状况,来全面提升并保持企业的竞争优势及盈利能力。 Fofa语句: body="用友U8CRM"  poc GET/pub/help.php?key=Y......
  • django一
    简介https://www.runoob.com/django/django-intro.html安装pipinstallDjangoimportdjangoprint(django.get_version())启动您现在应该已经有了可用的管理工具django-admin,Windows如果没有配置环境变量可以用django-admin。我们可以来看下django-admin的命令介绍使......
  • django二
    Django模型DjangoORMsettings.py文件中找到DATABASES配置项DATABASES={ 'default': {   'ENGINE':'django.db.backends.mysql', #数据库引擎   'NAME':'runoob',#数据库名称   'HOST':&#......
  • django三
    不同环境配置https://blog.csdn.net/happylee524/article/details/104067973pythonyour_project/manage.pyrunserver0.0.0.0:8000--settings=your_project.settings.set_dev低版本MySQL启动必须注释源码(django高版本不支持Mysql低版本)django\db\backends\base\base.py#s......