4.22 go 文件的读写

package main

import(
	"fmt"
	"os"
	"io"
	"bufio"
)
/**
  新建文件
*/
func WriteFile(path string){
	//打开文件,新建文件
	f,err:=os.Create(path)
	if err!=nil{
		fmt.Println(err)
		return
	}
	//使用完文件后要关闭文件
	defer f.Close()
	
	//写入内容
	for i:=0;i<10;i++{
		//格式化赋值
		buf:=fmt.Sprintf("i=%d\n",i)
		n,err:=f.WriteString(buf)
		if err!=nil{
			fmt.Println(err)
			return
		}
		
		fmt.Println("写入",n)
	}
	
}
/**
  读取文件
*/
func ReadFile(path string){
	//打开文件
	f,err:=os.Open(path)
	if err!=nil{
		fmt.Println(err)
		return
	}
	// 最后关闭文件
	defer f.Close()
	buf:=make([]byte,1024*2)//2k大小
	n,err2:=f.Read(buf)
	if err2!=nil&&err2!=io.EOF{//不是文件读到结尾异常
		fmt.Println(err2)
		return
	}
	
	fmt.Println("buf=",string(buf[:n]))//n读到的个数
}

/**
  按行读取文件
*/
func ReadFileLine(path string){
	//打开文件
	f,err:=os.Open(path)
	if err!=nil{
		fmt.Println(err)
		return
	}
	// 最后关闭文件
	defer f.Close()
	//新建一个缓冲区,把内容先放到缓冲区
	r:=bufio.NewReader(f)
	//循环读取
	for{
		//遇到\n结束读取,但是'\n'也读取进去
		buf,err:=r.ReadBytes('\n')
		if err!=nil{
			if err==io.EOF{//文件读取结束
				break
			}
			fmt.Println(err)
			return
		}
		fmt.Println(string(buf))
		
	}
	
	
	
	
}

func main(){
	path:="./demo.txt"
	//WriteFile(path)
	//ReadFile(path)
	ReadFileLine(path)
	
	
}
发布了124 篇原创文章 · 获赞 94 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/h4241778/article/details/105347967