golang-读取文件

一次读多少byte第一种,一次读多少行用bufio,读取完整文件用ioutil。

在这里插入图片描述

package main

import (
	"fmt"
	"os"
)

//打开文件

func main() {
	fileObj, err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("open file failed ,err:%V", err)
		return
	}
	//记得关闭文件
	//读文件
	//var tmp = make([]byte,128) // 指定读的长度
	var tmp  [128]byte
	for{
		n ,err := fileObj.Read(tmp[:])
		if err != nil{
			fmt.Printf("read from file failed,err:%V",err)
			return
		}
		fmt.Printf("读了%d个字节\n",n)
		fmt.Println(string(tmp[:n]))
		if n == 0{
			fileObj.Close()
			return
		}
	}

}

结果

读了128个字节
package main

import (
        "fmt"
        "os"
)

//打开文件

func main() {
        fileObj, err := os.Open("./main.go")
        if err !=
读了128个字节
 nil {
                fmt.Printf("open file failed ,err:%V", err)
                return
        }
        //记得关闭文件
        //读文件
        //var tmp = make([]by
读了128个字节
te,128) // 指定读的长度
        var tmp  [128]byte
        for{
                n ,err := fileObj.Read(tmp[:])
                if err != nil{
                        fmt.Printf("re
读了128个字节
ad from file failed,err:%V",err)
                        return
                }
                fmt.Printf("读了%d个字节\n",n)
                fmt.Println(string(tmp[:n]))
                if n
读了50个字节
== 0{
                        fileObj.Close()
                        return
                }
        }

}

利用bufio这个包裹读取文件

func readFromFilebyBufio(){
	fileObj , err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("Open file failed: %v",err)
		return
	}
	//记得关闭文件
	defer fileObj.Close()
	//创建一个用来从文件中读内容的对象
	reader := bufio.NewReader(fileObj)//拆包关键新的读的对象
	for{
		line , err  := reader.ReadString('\n')
		if err == io.EOF {
			return
		}
		if err != nil {
			fmt.Printf("read line failed: %v",err)
			return`在这里插入代码片`
		}
		fmt.Println(line)
	}

}

读取结果

结果每行之间存在空行是因为println

package main



import (

        "bufio"

        "fmt"

        "io"

        "os"

)



//打开文件



func readFromFile1(){

        fileObj, err := os.Open("./main.go")

        if err != nil {

                fmt.Printf("open file failed ,err:%V", err)

                return

        }

        //记得关闭文件

        //读文件

        //var tmp = make([]byte,128) // 指定读的长度

        var tmp  [128]byte

        for{

                n ,err := fileObj.Read(tmp[:])

                if err == io.EOF {

                        fmt.Println("读完了")

                        return

                }

                if err != nil{

                        fmt.Printf("read from file failed,err:%V",err)

                        return

                }

                fmt.Printf("读了%d个字节\n",n)

                fmt.Println(string(tmp[:n]))

                if n < 128{

                        fileObj.Close()

                        return

                }

        }

}



// 利用bufio这个包裹读取文件

func readFromFilebyBufio(){

        fileObj , err := os.Open("./main.go")

        if err != nil {

                fmt.Printf("Open file failed: %v",err)

                return

        }

        //记得关闭文件

        defer fileObj.Close()

        //创建一个用来从文件中读内容的对象

        reader := bufio.NewReader(fileObj)//拆包关键新的读的对象

        for{

                line , err  := reader.ReadString('\n')

                if err == io.EOF {

                        return

                }

                if err != nil {

                        fmt.Printf("read line failed: %v",err)

                        return

                }

                fmt.Println(line)

        }


func main() {

        //readFromFile1()

        readFromFilebyBufio()

ioutil

func readFromFilebyIoutil(){

	ret ,err := ioutil.ReadFile("./main.go")
	if err != nil {
		fmt.Printf("read file failed ,err:%v",err)
		return
	}
	fmt.Println(string(ret))

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值