【golang中的文件操作】

这篇具有很好参考价值的文章主要介绍了【golang中的文件操作】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

您可以通过以下步骤来开始编写您所需的代码和注释:

1. 导入所需的包:

import (
    "os"
    "io/ioutil"//全部读取
    "bufio"//带有缓冲的读取
    "fmt"
)

2. 打开文件:

使用os.Open()函数可以打开一个文件,并返回一个*os.File类型的文件指针。您可以使用defer关键字确保在函数结束时关闭文件。

file, err := os.Open("filename.txt")
if err != nil {
    fmt.Println(err)
}
defer file.Close()//关闭文件

3. 读取文件内容:ioutil.ReadFile(path )

使用ioutil.ReadFile()函数可以读取整个文件的内容,并将其作为字节切片返回。您可以使用string()函数将字节切片转换为字符串。

path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
//一次性读取所有
content, err := ioutil.ReadFile(path )
if err != nil {
    fmt.Println(err)
}
fmt.Println(string(content))

4 带有缓冲的读取bufio.NewReader(file)

//读取方式  带有缓存
	path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
	file ,err:= os.Open(path)
	if err != nil{
		fmt.Println("存在错误",err)
	}
	fmt.Println(file.Name())
	//关闭文件
	defer file.Close()
	//读取管道
	reader := bufio.NewReader(file)
	
	for{
		str,err2:=reader.ReadString('\n')//读取到\n 输出一次
		fmt.Println(str)
		if err2 == io.EOF {
			break
		}
	
	}
	fmt.Println("读取完成")

5. 写入文件:file.WriteString(“Hello, World!”)

使用os.Create()函数可以创建一个新文件,并返回一个*os.File类型的文件指针。然后,您可以使用Write()WriteString()方法将数据写入文件。

file, err := os.Create("newfile.txt")
if err != nil {
    fmt.Println(err)
}
defer file.Close()

_, err = file.WriteString("Hello, World!")
if err != nil {
    fmt.Println(err)
}

6.文件写入 bufio.NewWriter(file)

path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"

//文件写入
file, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0755)
if err != nil {
	fmt.Println("存在错误", err)
}
defer file.Close()
//给个写的管子
writer := bufio.NewWriter(file)

//writer.WriteString("你好 我是程序数据\n")
for i:=0;i<10;i++ {
	str := "你好 我是程序数据\n"
	writer.WriteString(str)
}

writer.Flush()

7.文件写入ioutil.WriteFile(path2,content,0666)

path2 :="E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy.txt"
//复制
err2 := ioutil.WriteFile(path2,content,0666)
if err2 != nil {
	fmt.Println("存在错误",err2)
}

8. 文件重命名和删除:

使用os.Rename()函数可以将文件重命名,使用os.Remove()函数可以删除文件。

err := os.Rename("oldfile.txt", "newfile.txt")
if err != nil {
    fmt.Println(err)
}

err = os.Remove("filename.txt")
if err != nil {
    fmt.Println(err)
}

9文件复制 ReadFile WriteFile

文件复制
path :="E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
content,err := ioutil.ReadFile(path)
if err != nil {
	fmt.Println("存在错误",err)
}
fmt.Println(string(content))

path2 :="E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy.txt"
//复制
err2 := ioutil.WriteFile(path2,content,0666)
if err2 != nil {
	fmt.Println("存在错误",err2)
}

10文件复制 文件复制NewReader NewWriter

//文件复制
path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
file ,err:= os.Open(path)
if err != nil{
	fmt.Println("存在错误",err)
}
fmt.Println(file.Name())
//关闭文件
defer file.Close()

//	给个管道
reader := bufio.NewReader(file)
path2 := "E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy2.txt"
file2 ,err2:= os.OpenFile(path2, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0755)
if err2 != nil{
	fmt.Println("存在错误",err2)
}
writer := bufio.NewWriter(file2)
for  {
	str, err:= reader.ReadString('\n')
	fmt.Println(str)
	writer.WriteString(str)
	if err == io.EOF {
		break
	}
}
writer.Flush()

以上是一些基本的文件操作示例。您可以根据自己的需求进行进一步的扩展和修改。文章来源地址https://www.toymoban.com/news/detail-602142.html

到了这里,关于【golang中的文件操作】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Golang:文件读写操作WriteFile、ReadFile和0644权限

    方法签名 示例代码 关于 0644 权限,可以参考下图 第0位:文件属性。“-” 表示普通文件;“d” 表示是一个目录 第1~3位:文件所有者的权限 第4~6位:文件所属用户组的权限 第7~9位:其他人的权限 参考 Go写文件的权限 WriteFile(filename, data, 0644)? Golang 基础之文件操作

    2024年04月28日
    浏览(33)
  • 前端下载后端返回的文件流,取请求头中的文件名称

    但是用上面的方法发现只能顺利下载文件, res.headers[\\\"content-disposition\\\"] 取不到后端给前端返回的请求头。 通过问题排查发现: 如图,前端需要取的 res.headers 和 res.data 是一层的,当拦截器中返回 res.data 后,就取不到外层的 headers, 因此前端要自己写 axios 请求方法 但是前端依

    2024年02月01日
    浏览(47)
  • Vue+elementUI中的el-upload实现上传文件给后端,限制上传文件的格式、文件的大小、文件的数量,将表单和Excel文件一起提交给后端

    需求:1.表单输入信息 2.上传Excel附件 3.下载附件模板 4.限制上传文件的格式、文件的大小、文件的数量 5.将表单和Excel文件一起提交给后端 效果图: 样式部分 data部分代码 method中的代码

    2024年02月12日
    浏览(60)
  • golang实现webgis后端开发

    目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回  2.前端传入的geojson储存到数据库 3、其他功能实现 总结         停更了接近一个月都在研究一门新语言gola

    2024年02月08日
    浏览(50)
  • 【后端学习笔记·Golang】邮箱邮件验证

    流程: 接收用户请求后生成随机验证码,并将验证码存入Redis中,并设置TTL 通过gomail发送验证码给用户邮箱 接收用户输入的验证码,与Redis中存放的验证码进行比对 ​ 随机种子通过 time.Now().UnixNano() 进行设置,以确保对于同一个用户每次请求都使用不同的种子。然后,定义

    2024年04月26日
    浏览(50)
  • golang iris框架 + linux后端运行

    打包应用 开启服务 关闭后台 杀死进程 通过 ps -ef|grep main 找到应用出现 找到应用的( PID(一般是第一个数字) )

    2024年02月07日
    浏览(56)
  • C#中的文件操作

    在计算机当中,数据是二进制的形式存在的,文件则是用于存储这些数据的单位,因此在需要操作计算机中的数据时,需要对文件进行操作。 在程序开发过程中,操作变量和常量的时候,数据都是存储在内存中的,程序运行结束后会被全部删除。 所以当想要持续性保存相关

    2024年01月19日
    浏览(35)
  • Java中的文件操作

    Java中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象, 并不代表真实存在该⽂件。  1.1 属性 在Java中提供了这两个常量来获取对应的系统的文件路径分隔符 pathSeparatorChar是一个字符常量,表示系统相关的路径分隔符。它的值由fs.getPathSeparato

    2024年01月21日
    浏览(95)
  • Python中的File(文件)操作

    针对磁盘中的文件的读写。文件I/O I 输入(input) O输出(Output) 文件操作步骤:1.打开文件 2.读写文件 3.关闭文件 写入文件的操作:(把大象装进冰箱) 打开文件 open() == 打开冰箱 写入内容 write() == 把大象装进冰箱 关闭文件 close() == 关闭冰箱门 读取文件的操作:(把大象从冰

    2024年02月12日
    浏览(33)
  • C语言中的文件操作函数

    首先学习文件指针的相关知识 在C语言中,文件指针是一个指向文件的指针变量,用于定位和操作文件。在C语言中文件指针类型 FILE* 习惯性定义文件指针为 FILE* fp; 文件操作函数在stdio.h的头文件中。所以要进行 顾名思义,这个函数的意思就是打开文件。 函数原型 FILE* fop

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包