• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go:读取、拷贝文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1. 读取文件,打印每一行文本内容

func main() {

    // ./表示当前工程的目录
    filepath:="./source/a.txt"
    // 返回文件指针
    file, e := os.Open(filepath)
    if e != nil {
        fmt.Println("open file error",e)
        return
    }

    readLine(file)

    readBuffer(file)

    dst := "./source/b.txt"
    copyFile(dst,filepath)
}

/**
    将每行的文本内容进行打印输出
*/
func readLine(file *os.File) {

    reader := bufio.NewReader(file)
    for {
        // 设置读取结束字符,此处设置每次读取一行
        line, e := reader.ReadString('\n')
        // 读取到文件末尾
        if e == io.EOF {
            fmt.Println("read file finish")
            return
        }
        // 读取文件发生异常
        if e != nil {
            fmt.Println(e)
            return
        }
        // 打印这一行的内容
        fmt.Print(line)
    }
}

 

2. 读取文件,每次读取指定 []byte大小的内容

func main() {

    // ./表示当前工程的目录
    filepath:="./source/a.txt"
    // 返回文件指针
    file, e := os.Open(filepath)
    if e != nil {
        fmt.Println("open file error",e)
        return
    }

    readLine(file)

    readBuffer(file)

    dst := "./source/b.txt"
    copyFile(dst,filepath)
}
/**
    将缓冲区的文本内容进行打印输出
*/
func readBuffer(file *os.File) {

    reader := bufio.NewReader(file)
    // 字节缓冲区
    buf:= make([]byte,10)
    for {
        // 设置每次读取文件内容到缓冲区字节数组
        n, e := reader.Read(buf)
        // 读取到文件末尾
        if e == io.EOF {
            fmt.Println("read file finish")
            return
        }
        // 读取文件发生异常
        if e != nil {
            fmt.Println(e)
            return
        }
        var buffer bytes.Buffer
        buffer.Write(buf)
        // 打印缓冲区字节数组的内容
        fmt.Printf("read byte[] len = %d, content = %s \n",n,buffer.String())
    }
}

 

3. 拷贝文件

/**
    拷贝文件
 */
func copyFile(dstName, srcName string) (written int64, err error) {
    src, err := os.Open(srcName)
    if err != nil {
        return
    }
    defer src.Close()

    dst, err := os.Create(dstName)
    if err != nil {
        return
    }
    defer dst.Close()

    return io.Copy(dst, src)
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Filecoin周报-41:存储市场大变动,go-filecoin正式接入lotus!发布时间:2022-07-10
下一篇:
go语言读写文件发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap