Go中的文件读写

本文介绍了Go语言中如何进行文件的读写操作,包括使用os.Open、os.OpenFile进行读写,利用bufio进行缓冲区读取,处理压缩文件以及使用ioutil的便捷方法。详细讲解了各种打开文件模式和权限设置,以及读写文件的不同方式。
摘要由CSDN通过智能技术生成

Go中的文件读写

在 Go 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 。我们来看一下os包的使用方式。

1.读取文件

os包提供了两种打开文件的方法:

Open(name string) (*File, error)
func OpenFile(name string, flag int, perm FileMode) (*File, error) 

第一个方法是以只读的方式去打开文件,如果文件不存在或者程序没有足够的权限打开这个文件,Open函数会返回错误;

第二个方法会自由一些,你可以设置打开文件的方式,以及文件的操作权限,后面我们详细说明。

package main

import (
    "fmt"
    "os"
)
func main() {
   
    file, e := os.Open("c:/1.txt")
    if e != nil {
   
        fmt.Println(e)
    }
    buf := make([]byte,1024)
    for {
   
        len, _ := file.Read(buf)
        if len == 0 {
   
            break
        }
        fmt.Println(string(buf))
    }

    buf1 := make([]byte,1024)
    offset := 0
    for {
   
        len1, _ := file.ReadAt(buf1, int64(offset))
        offset = offset + len1
        if len1 == 0 {
   
            break
        }
        fmt.Println(string(buf1))
    }
    file.Close()
}

这是一个简单的打开文件读取数据的例子。

file.Read()方法是直接将文件内容读取到指定大小的byte数组中,由源码可知如果byte数组大于1G,那么默认一次最大可以读取1G大小的数据。

file.ReadAt()方法可以手动指定每次读取位置的偏移量。而不是默认设置。

我们再看OpenFile方法:

package main

import (
    "fmt"
    "os"
)
func main() {
   
    //以读写方式打开文件,如果不存在,则创建
    openFile, e := os.OpenFile("c:/1.txt", os.O_RDWR|os.O_CREATE, 777)
    if e != nil {
   
        fmt.Println(e)
    }
    buf := make([]byte,1024)
    for {
   
        len, _ := openFile.Read(buf)
        if len == 0 {
   
            break
        }
        fmt.Println(string(buf))
    }
    openFile.Close()
}

OpenFile函数的第二个参数是文件的打开模式:

const (
	// Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
	O_RDONLY int = syscall.O_RDONLY // 只读模式
	O_WRONLY 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值