首页 > 其他分享 >Go文件操作

Go文件操作

时间:2023-08-28 18:32:27浏览次数:35  
标签:文件 nil err fmt Println Go 操作 main os

写文件

package main

import (
	"fmt"
	"os"
)

func main() {
	f1, err := os.Create("/Users/db/go_project/BeegoDemo/test.txt") //新建文件
	// f2, err2 := os.OpenFile("/Users/db/go_project/BeegoDemo", os.O_CREATE, 0666) //新建文件
	if err != nil {
		fmt.Println(err)
	}
	defer f1.Close() //延时关闭文件
	for i := 0; i < 5; i++ {
		outstr := fmt.Sprintf("%s:%d\n", "hello go", i)

		n, _ := f1.WriteString(outstr) //写入字符
		n2, _ := f1.Write([]byte("abc\n5"))
		fmt.Println(n, n2)

	}

}

读文件

  • Golang 中,读取 文件 有四种方法,分别为:
  • os.ReadFile ;ioutil.ReadFile已经废弃
func main() {
	b, err := os.ReadFile("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(b))
}
  • file.Read
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	buf := make([]byte, 1024) //开辟1024个字节的slice作为缓冲
	for {
		n, err := f.Read(buf)
		if err != nil && err != io.EOF { //有错误且错误不是文件结束EOF
			fmt.Println("read buf fail", err)
		}
		if n == 0 { //0表示已经读取到文件结束
			break
		}
		fmt.Println(string(buf))
	}
}
  • bufio.NewReader
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	buf := make([]byte, 1024) //开辟1024个字节的slice作为缓冲
	for {
		r := bufio.NewReader(f)
		n, err := r.Read(buf)
		if err != nil && err != io.EOF { //有错误且错误不是文件结束EOF
			fmt.Println("read buf fail", err)
		}
		if n == 0 { //0表示已经读取到文件结束
			break
		}
		fmt.Println(string(buf))
	}
}
  • io.ReadAll
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	b, err := io.ReadAll(f)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(b))
}

标签:文件,nil,err,fmt,Println,Go,操作,main,os
From: https://blog.51cto.com/u_14218719/7266019

相关文章

  • Golang数据库标准库
    驱动连接数据库是典型的CS架构,服务器端被动等待客户端建立TCP连接,并在此连接上进行特定的应用层协议。但一般用户并不需要了解这些细节,这些都被打包到驱动库中,只需要简单的调用打开就可以执行协议连接到指定的数据库。数据库的种类和产品很多,协议也很多,Go官方很难提供针对不同数据......
  • django(cookie与session、中间件、auth模块)
    一cookie与session1发展史及简介"""发展史1.网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的eg:新闻、博客、文章2.出现了一些需要保存用户信息的网站eg:淘宝、支付宝、京东解决每次访问网站都需要重复的输入......
  • git上传大文件
    目录我尝试使用git上传4GB的文件到gitea上的时候,发现文件会再300MB左右被截断(有文件大小限制)排查发现是git端的问题,不是gitea的问题使用gitlfs解除上传大小限制打开gitbash输入命令gitlfsinstall再输入gitlfstrack"*.mp4"或者gitlfstrack"*"最后gitadd、gitp......
  • 文件操作
    所谓文件,就是系统提供给你的直接操作硬盘的快捷方式。计算机三大组成部分,CPU,内存,硬盘,其中CPU负责计算,内存和硬盘负责存储数据,内存特点是存取快,但是无法永久化存储数据(断电数据就会丢失),硬盘存取数据慢,但是可以用来永久存储。 文件的打开f=open("a.txt",mode="rt")......
  • Go语言GOPROXY设置
    1.首先开启gomodulegoenv-wGO111MODULE=on//WindowsexportGO111MODULE=on//macOS或Linux2.1-七牛云配置:goenv-wGOPROXY=https://goproxy.cn//WindowsexportGOPROXY=https://goproxy.cn//macOS或Linux2-阿里云配置:goenv-w......
  • [note] pytorch的几种维度操作方式比对
    pre今天看代码在想torch.unbind+torch.cat与torch.reshape的区别,直观上来看reshape似乎更便利。chatgpt问题xisatensorofthreedimension,whatisthedifferencebetweentorch.cat(torch.unbind(x,dim=1),dim=0)andtorch.reshape(x,(x.shape[0]*x.shape[1]......
  • 05 文件之IO
    标准IO介绍IO的概念I——input,指输入设备,比如键盘鼠标都是Input设备。O——output,指输出设备,比如显示器。优盘,网口,既是输入也是输出。文件类型文件指一组相关数据的有序集合。文件类型:常规文件r目录文件d字符设备文件c块设备文件b管道文件......
  • 键盘敲入 A 字母时,操作系统期间发生了什么?
    键盘敲入A字母时,操作系统期间发生了什么?关于8.1键盘敲入A字母时,操作系统期间发生了什么?的总结,前面都介绍了,但是在最后总结操作系统发生了什么的时候,我觉得有点不详细,于是写一写自己的补充和理解,不一定正确。键盘敲击之后,键盘控制器根据敲击的键生成扫描码,写入寄存器。同......
  • RTSP/Onvif协议安防视频平台EasyNVR录像模式自定义操作
    TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif流媒体协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告......
  • 把 Windows 10 安装在外接活动硬盘(ssd)上面(2)——VHDX文件(虚拟磁盘文件)部署
     不使用Windowstogo,把Windows10安装在外接活动硬盘(ssd)上面(2)——VHDX文件部署上一篇文章带来的问题准备工作实现过程一、清空SSD数据二、创建磁盘信息1、创建启动分区(200MB)2、创建存放文件的主分区3、创建存放系统的虚拟磁盘文件(VHDX文件)(1)创建文件夹(2......