iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >GO文件创建及读写操作的方法
  • 213
分享到

GO文件创建及读写操作的方法

2023-06-30 02:06:54 213人浏览 独家记忆
摘要

本文小编为大家详细介绍“Go文件创建及读写操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“GO文件创建及读写操作的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。三种文件操作比较ioutilbufio

本文小编为大家详细介绍“Go文件创建及读写操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“GO文件创建及读写操作的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    三种文件操作比较

    ioutilbufioos.File当文件较小(KB 级别)时,ioutil > bufio > os。当文件大小比较常规(MB 级别)时,三者差别不大,但 bufio 又是已经显现出来。当文件较大(GB 级别)时,bufio > os > ioutil。

    ioutil

    ioutil.ReadFile读

    //读func Ioutil_read() {file, _ := ioutil.ReadFile("./write.txt")fmt.Println(string(file))}

    ioutil.WriteFile 写

    //写func Ioutil_write()  {ioutil.WriteFile("./write.txt",[]byte("aaaa\nbbb\ncccc\n啦啦啦啦"),0777)}

    ioutil.ReadAll 读

    // 比较浪费内存,解决方法,百度查询file,_ := os.Open("./write.txt")b,_:=ioutil.ReadAll(file)fmt.Println(string(b))

    ioutil.ReadDir 查看路径下目录信息

    func Ioutil_ReadDir()  {dir,_:=ioutil.ReadDir("./")for _,file := range dir{fmt.Println(file.Name())  //文件名字fmt.Println(file.Size())  //文件大小fmt.Println(file.IsDir())  //判断是否为目录fmt.Println(file.Mode())  //查看读写权限-rw-r--r--fmt.Println(file.ModTime())  //文件创建时间}}

    ioutil.TempDir 创建临时目录

    // 创建临时目录,以jeff开头,eg:jeff0123755func Ioutil_Tempdir()  {path,_ := ioutil.TempDir("./","jeff")fmt.Println(path)  //返回临时目录路径}

    ioutil.TempFile 创建临时文件

    // 创建临时文件,以jeff开头,eg:jeff067576func Ioutil_file()  {//以读写模式打开该文件并返回os.File指针path,_:=ioutil.TempFile("./","jeff")fmt.Println(path) //返回os.File指针}

    os.file

    方法

    os.Create() //创建文件,如果有该文件则会清空文件os.Open()  // 只读方式打开文件os.OpenFile(文件名,打开方式,打开权限)Write() //写入Read()  //读取

    os.OpenFile()

    OpenFile( )这个函数有三个参数,第一个参数表示打开文件的路径,第二个参数表示模式,常见的模式有O_RDONLY(只读模式),O_WRONLY(只写模式),O_RDWR(可读可写模式),O_APPEND(追加模式)。第三个参数,表示权限,取值范围(0-7)表示如下:0:没有任何权限1:执行权限(如果是可执行文件,是可以运行的)2:写权限3:写权限与执行权限4:读权限5:读权限与执行权限6:读权限与写权限7:读权限,写权限,执行权限
    fp,err := os.OpenFile("D:/a.txt",os.O_RDWR,6)if err!=nil {    fmt.Println("打开文件失败")}fp.WriteString("hello")fp.WriteAt([]byte("hello"),25)defer fp.Close()

    创建文件

    将数据存储到文件之前,先要创建文件。GO语言中提供了一个Create( )函数专门创建文件.

    该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。

    同时,当文件创建成功后,该文件会默认的打开,所以不用在执行打开操作,可以直接向该文件中写入数据。

    创建文件的步骤:

    (1)导入“os”包,创建文件,读写文件的函数都在该包

    (2)指定创建的文件存放路径以及文件名。

    (3)执行Create( )函数,进行文件创建

    (4)关闭文件

    具体代码:

    package mainimport (    "fmt"    "os")func main() {    //os.Create(文件名) 文件名  可以写绝对路径和相对路径    //返回值  文件指针 错误信息    fp,err := os.Create("./a.txt")    if err!=nil{        //文件创建失败                fmt.Println("文件创建失败")        return    }    //读写文件    defer fp.Close()    //关闭文件    //如果打开文件不关闭 造成内存的浪费  程序打开文件的上限    //fp.Close()}

    写入数据三种方式

    第一种-WriteString( )函数

    WriteString( )方法默认返回两个参数,第一个参数,指的是写入文件的数据长度,第二个参数记录的是错误信息WriteString( )方法默认写到文件中的数据是不换行的。如果想换行,可以采用如下的方式://\n不会换行  原因 在windows文本文件中换行\r\n  回车  在linux中换行\nfp.WriteString("hello world\r\n")fp.WriteString("性感荷官在线发牌")

    文件打开以后,可以向文件中写数据,可以使用WriteString( )方法。

    //\反斜杠 转义字符//在写路径时可以使用/正斜杠代替\反斜杠fp,err := os.Create("D:/a.txt")if err!=nil{    //文件创建失败        fmt.Println("文件创建失败")    return}//写文件//\n不会换行  原因 在windows文本文件中换行\r\n  回车  在linux中换行\nfp.WriteString("hello world\r\n")fp.WriteString("性感荷官在线发牌")defer fp.Close()//关闭文件//如果打开文件不关闭 造成内存的浪费  程序打开文件的上限//fp.Close()

    第二种-Write( )函数

    在这里要注意的是,使用Write( )函数写数据时,参数为字节切片,所以需要将字符串转换成字节切片。该方法返回的也是写入文件数据的长度
    fp,err := os.Create("D:/a.txt")if err!=nil{    //文件创建失败        fmt.Println("文件创建失败")    return}//写操作//slice := []byte{'h','e','l','l','o'}//count,err1 := fp.Write(slice)count,err1 := fp.Write([]byte("性感老王在线授课"))if err1!=nil {    fmt.Println("写入文件失败")    return}else {    fmt.Println(count)}defer fp.Close()

    第三种-WriteAt( )函数

    在指定的位置写入数据,以下程序中Seek( )函数返回值存储到变量n中,值为文件末尾的位置。WriteAt( )也返回的是写入的数据长度。

    fp,err := os.Create("D:/a.txt")if err!=nil{    //文件创建失败        fmt.Println("文件创建失败")    return}//写操作//获取光标流位置'//获取文件起始到结尾有多少个字符//count,_:=fp.Seek(0,os.SEEK_END)count,_:=fp.Seek(0,io.SeekEnd)fmt.Println(count)//指定位置写入fp.WriteAt([]byte("hello world"),count)fp.WriteAt([]byte("hahaha"),0)fp.WriteAt([]byte("秀儿"),19)defer fp.Close()

    读取文件

    Read 读取文件

    如果文件已经存在,并且也已经有数据了,那么可以直接读取该文件中的内容。

    读取文件的基本流程如下:

    (1)打开要读取的文件

    (2)对文件进行读取

    (3)关闭文件

    在向文件中写数据的时候,使用的是Write,那么读取文件中的数据,使用的是Read.

    关于Read( )函数的使用如下:

    package mainimport (    "fmt"    "io"    "os")func main() {    //打开文件    fp, err := os.Open("D:/a.txt")    if err != nil {        fmt.Println("err=", err)        return    }    buf := make([]byte, 1024*2) //2k大小    //n代表从文件读取内容的长度    n, err1 := fp.Read(buf)    if err1 != nil && err1 != io.EOF {        fmt.Println("err1=", err1)        return    }    fmt.Println("buf=", string(buf[:n]))    //关闭文件    defer fp.Close()}

    Open( )是打开文件,与OpenFile( )的区别是,Open( )只有读的权限

    在使用Read( )函数读取文件中的内容时,需要一个切片类型,而定义切片时类型为字符数组,将文件中的内容保存在切片中,同时除了对其判断是否出错时以外,还要判断是否到文件末尾(这里需要导入io包)。

    Read( )函数返回的是从文件中读取的数据的长度。最后,输出切片中存储的文件数据,注意,读取的是从最开始到整个数据长度,因为有可能存储到切片中的数据达不到切片的总长度(也是切片时2k,但是从文件中读取的数据有可能只有1k)

    按行读取

    上面我们是将文件的内容全部读取出来,然后存放在切片中,我们也可以每次只读取一行数据。

    这需要用到bufio包中的ReadBytes函数。具体如下:

    打开文件

    fp, err := os.Open("D:/a.txt")if err != nil {    fmt.Println("打开文件失败", err)    return}

    创建缓冲区

    在使用ReadBytes( )函数读取数据时,需要用到缓冲区,所谓缓冲区就是存储数据的区域,也就是先将从文件中读取的数据存储在该区域内,然后在将区域中的数据取出来,写到磁盘上。提供缓冲区的原因是:

    为了缓和 CPU 与磁盘设备之间速度不匹配矛盾。文件缓冲区是用以暂时存放读写期间的文件数据而在内存区预留的一定空间。

    //创建文件缓冲区r := bufio.NewReader(fp)

    循环读取文件中的内容,直到文件末尾位置。

    for {    //遇到'\n'结束读取,但是'\n'也读取进入    buf,err := r.ReadBytes('\n')    fmt.Println("buf = ",string(buf))    if err != nil {        if err == io.EOF {            break        }        fmt.Println("err=",err)    }}

    在使用ReadBytes( )函数时,传递的参数是‘\n’,表示遇到’\n’就结束,所以使用了死循环(每循环一次,读取一行数据),只有到文件末尾了,才退出整个循环。最后,将读取的数据打印出来,注意ReadBytes( )返回的是字节切片,所以在打印时要转换成字符串。

    最后关闭文件

    //关闭文件defer fp.Close()

    现在我们已经完成了文件的创建,读取,以及将数据保存到文件的操作,在对文件操作时,我们需要指定文件的路径。

    关于路径,有两种情况:

    第一:相对路径,所谓相对路径指的是文件相对于应用程序的路径。例如:上面我们一只使用的a.txt,这个文件,该文件存放的位置与可执行文件存储的路径是一样的。

    第二:绝对路径:指的是通过给定的这个路径直接能在我的电脑中找到这个文件。例如:D:\Info.txt,

    • 建议我们以后在开发中使用相对路径

    文件操作案例

    文件拷贝,将已有的文件复制一份,同时重新命名。

    基本的思路:

    (1)让用户输入要拷贝的文件的名称(源文件)以及目的文件的名称

    (2)创建目的文件

    (3)打开源文件,并且读取该文件中的内容

    (4)将从源文件中读取的内容写到目的文件中。

    var srcFileName stringvar dstFileName stringfmt.Printf("请输入源文件名称:")fmt.Scan(&srcFileName)fmt.Println("请输入目的文件名称:")fmt.Scan(&dstFileName)if srcFileName == dstFileName {    fmt.Println("源文件和目的文件名字不能相同")    return}//只读方式打开源文件sF,err1 := os.Open(srcFileName)if err1 != nil {    fmt.Println("err1=",err1)    return}//新建目的文件dF,err2 := os.Create(dstFileName)if err2 != nil{    fmt.Println("err2=",err2)    return}//操作完毕,需要关闭文件defer sF.Close()defer dF.Close()//核心处理,从源文件读取内容,往目的文件写,读多少写多少buf := make([]byte,4*1024)//4k大小临时缓冲区for{    n,err := sF.Read(buf)//从源文件读取内容,每次读取一部分    if err != nil{        fmt.Println("err=",err)        if err == io.EOF{//文件读取完毕            break        }    }    //往目的文件写,读多少写多少    dF.Write(buf[:n])}

    读到这里,这篇“GO文件创建及读写操作的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: GO文件创建及读写操作的方法

    本文链接: https://www.lsjlt.com/news/327168.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • GO文件创建及读写操作的方法
      本文小编为大家详细介绍“GO文件创建及读写操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“GO文件创建及读写操作的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。三种文件操作比较ioutilbufio...
      99+
      2023-06-30
    • GO文件创建及读写操作示例详解
      目录三种文件操作比较ioutilioutil.ReadFile读ioutil.WriteFile 写ioutil.ReadAll 读ioutil.ReadDir 查看路径下目录信息i...
      99+
      2024-04-02
    • Go读写锁操作的方法
      这篇“Go读写锁操作的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go读写锁操作的方法”文章吧。读写锁有很多方法方法一...
      99+
      2023-07-02
    • Python读写csv文件的操作方法
      这篇文章主要介绍了Python读写csv文件的操作方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。要在 Python 中写入 CSV,请使用 Python 的 csv 模块。例如,让我们将一个字符串列表写入一个新的 C...
      99+
      2023-07-06
    • Go语言zip文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言zip文件的读写操作方法有哪些”,在日常操作中,相信很多人在Go语言zip文件的读写操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言zip文件的读写操作方法有哪些...
      99+
      2023-07-05
    • Go语言zip文件的读写操作
      目录创建 zip 归档文件读取 zip 归档文件Go语言的标准库提供了对几种压缩格式的支持,其中包括 gzip,因此 Go 程序可以无缝地读写 .gz 扩展名的 gzip 压缩文件或...
      99+
      2023-05-14
      Go语言zip读写 go读写ZIP文件
    • Go读取文件与写入文件的三种方法操作指南
      目录文件写入操作Write和WriteString写入操作使用buffio内置包来读文件第三种写入文件方法:ioutil.WriteFile总结打开和关闭文件操作: os.Open(...
      99+
      2024-04-02
    • Go语言文件开关及读写操作示例
      目录⛳️ 实战场景打开关闭文件读取文件bufio 读取文件写文件⛳️ 实战场景 本篇博客为大家再次带来 Go 语言的基础知识,这次要学习的内容是 Go 中的文件操作。 打开关闭文件 ...
      99+
      2024-04-02
    • Pandas对CSV文件读写操作的方法
      这篇“Pandas对CSV文件读写操作的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas对CSV文件读写操作的...
      99+
      2023-06-30
    • Go语言中XML文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言中XML文件的读写操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中XML文件的读写操作方法有哪些”文章能帮助大家解决问题。XML(extensible...
      99+
      2023-07-05
    • Go语言中JSON文件的读写操作方法有哪些
      这篇文章主要介绍“Go语言中JSON文件的读写操作方法有哪些”,在日常操作中,相信很多人在Go语言中JSON文件的读写操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言中JSON文件的读写操...
      99+
      2023-07-05
    • Go语言中JSON文件的读写操作
      目录写 JSON 文件读 JSON 文件JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于 ...
      99+
      2023-05-14
      Go语言JSON读写 Go语言读写JSON
    • Go语言中XML文件的读写操作
      目录写 XML 文件读 XML 文件XML(extensible Markup Language)格式被广泛用作一种数据交换格式,并且自成一种文件格式。与上一节介绍的 JSON 相比...
      99+
      2023-05-14
      Go语言XML文件读写 Go语言XML读写
    • Python中CSV文件的读写库操作方法
      目录文件的基本读写用字典模式处理数据非标准格式的处理dialectSnifferCSV 格式的全称是 Comma Separated Values,意思是逗号分割的数据,是最常见的电...
      99+
      2022-12-08
      CSV文件读写库 CSV文件读写 CSV文件
    • Nodejs读写文件的操作方法有哪些
      这篇“Nodejs读写文件的操作方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Nodejs读写文件的操作方法有哪些...
      99+
      2023-07-04
    • python之文件操作(txt文本的读取写入及处理方法)
      目录 1. 读取txt文档 1.1 打开.txt文件逐行读取文件内容 2.1 分割句子保存列表 2.2 filter使用:使用filter可将列表中的元素进行函数处理(append和expend区别) 3.1 获取列表中每个元素的长度: 拓...
      99+
      2023-09-16
      python 开发语言
    • Go语言二进制文件的读写操作方法有哪些
      本篇内容介绍了“Go语言二进制文件的读写操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Go语言的二进制(gob)格式是一个自描...
      99+
      2023-07-05
    • SpringBoot读写操作yml配置文件方法
      目录yml配置规则普通的kv读取读取到集合和数组读取为对象和Mapyml配置规则 属性跟属性值之间使用“:”和一个“空格”隔开,层级结...
      99+
      2023-01-28
      SpringBoot读写操作yml SpringBoot yml配置文件
    • Python 文件的读写操作
      文章目录 一、Python 文件读写概述二、使用 open() 打开文件三、使用 read()、readline()、readlines() 读取数据四、使用 write()、writelin...
      99+
      2023-09-29
      职场和发展 java python 后端 算法
    • Go语言二进制文件的读写操作
      目录写Go语言二进制文件读Go语言二进制文件Go语言的二进制(gob)格式是一个自描述的二进制序列。从其内部表示来看,Go语言的二进制格式由一个 0 块或者更多块的序列组成,其中的每...
      99+
      2023-05-14
      Go语言二进制文件读写 golang 读写二进制文件
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作