首页 > 其他分享 >golang:osd.read函数

golang:osd.read函数

时间:2023-01-16 22:44:18浏览次数:47  
标签:err read golang buffer file byte os osd

函数原型

func (f *File) Read(b []byte) (n int, err error) {
        // 传入b 一段内存Buff
        // 检测file是否为空,为空则返回
	if err := f.checkValid("read"); err != nil {
		return 0, err
	}
        // 将内容读到buff中,每次返回读了多少个byte和是否有错误
	n, e := f.read(b)
	return n, f.wrapErr("read", e)
}

示例

package main

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

func main() {
	file, err := os.Open("./main.go")
	if err != nil {
		log.Fatalln("open file failed")
	}
	defer file.Close()
	buffer := make([]byte, 16)
	for {
                // 每次读取到buffer中,返回n个byte
		n, err := file.Read(buffer)
		if err == io.EOF {
			os.Exit(0)
		}
		if err != nil {
			log.Println("read byte failed")
			os.Exit(127)
		}
                // 因为重复使用buffer,所以每次只打印buffer中的开始字节到读取到的n个字节
		fmt.Print(string(buffer[:n]))
	}
}

标签:err,read,golang,buffer,file,byte,os,osd
From: https://www.cnblogs.com/ishmaelwanglin/p/17056484.html

相关文章

  • golang 结构体
    结构体与JSON序列化JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON键值对是用来保存JS对象的一......
  • (转)Golang中自动“取引用”和“解引用”对原值的影响
    原文:https://blog.csdn.net/u014633283/article/details/839020201.写在前面我们知道Golang在调用方法时,会自动对实参进行“取引用”或“解引用”操作。我们在前面的博客......
  • golang map的定义与使用
    Mapmap是一堆键值对的未排序集合,比如以身份证号作为唯一键来标识一个人的信息。map是引用类型,键必须支持相等运算符(==,!=)类型,比如:int,string,float等内建类型,只含......
  • golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
      #定义示例类型和变量typeHumanstruct{Namestring}varpeople=Human{Name:"zhangsan"} 普通占位符占位符说明......
  • golang切片
    切片切片并不是数组或者数组指针,切片只是对数组中连续片断的引用,这个片断可以是整个数组,也可以是由起始索引和终止索引标识的数组,所以切片是一个引用类型。//切......
  • tracer ftrace笔记(12)—— trace文档翻译与实验——README
    基于Linux-5.10.110一、翻译/sys/kernel/tracing#catREADMEtracingmini-HOWTO:#echo0>tracing_on//禁用trace的快速方法#echo1>tracing_on//重新启用tr......
  • VALID/READY 握手机制
    VALID/READY握手机制AXI总线共有5个独立的​​通道​​,分别为写地址,写数据,写回应,读地址,读数据通道。5条通道相互独立,有一些细小的差别,但共同使用一套握手机制:VALID/R......
  • ERROR: default sources list file already exists: /etc/ros/rosdep/sources.list.d/
    ERROR:defaultsourceslistfilealreadyexists:/etc/ros/rosdep/sources.list.d/20-default.listPleasedeleteifyouwishtore-initializesudorm/etc/ros/rosde......
  • golang 为图片加水印
    前段时间一个需求涉及到给图片加水印,考虑图片安全性,决定放在后端加水印。记录一下代码。思路思路是先为水印文字生成一个仅包含水印文字的图片,把这个图片倾斜一定角度(......
  • (转)Golang - new和make的使用和区别(示例详解)
    原文:https://www.cnblogs.com/beatleC/p/16081832.html前言:Go语言中new和make是内置函数,主要用来创建分配类型内存(相同点:堆上),其功能相似,却有本质区别。引入:变量的声明v......