我是靠谱客的博主 欢呼电脑,最近开发中收集的这篇文章主要介绍Go: 对文件的操作(关于os包的读、写函数),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在Go语言中的os.File中,封装了所有的对于文件的相关操作,File是个结构体。

 

package  main
import (
	"fmt"
	"bufio"
	"os"
	"io"
)
func main() {
	//创建一个新文件
	//1、打开文件 c:/src/go_code/test_project/gotest.txt
	filePath := "c:/src/go_code/test_project/gotest.txt"
    /*
    func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
    参数1:文件路径
    参数2:打开方式,这里选择了可读写 | 清空原文件内容,
    参数3: 文件的权限为777,这个只在linux/unix有作用,在windows中无效
    */
	file,err := os.OpenFile(filePath,os.O_RDWR | os.O_TRUNC, 777)
	if err != nil {
		fmt.Printf("open file error =%v",err)
		return 
	}
	//及时关闭file句柄
	defer file.Close() //读取完毕后关闭文件,否则内存会溢出
	//准备写入5句“2022年是虎年”
	str := "2022年是虎年nr"// n表示换行 r表示可以用记事本也能打开正确的格式
	//写入时,使用带缓存的 *writer
	writer := bufio.NewWriter(file)
	for i := 0; i < 7; i ++ {
		writer.WriteString(str)
	} 

    /*
	因为writer是带缓存,因此在调用writerString方法时,其实内容是先写入到缓存中的,所以需要
    调用Flush()方法,将缓冲的数据真正写入到文件中,否则文件中会没有数据 !!!
    */
	writer.Flush()

	//读取文件
	file,err = os.Open(filePath)
	if err != nil {
		fmt.Println("open file err=", err)
	}
	defer file.Close()
	reader := bufio.NewReader(file)//按每行读取
	for {
		str, err := reader.ReadString('n')//每行读到行尾就结束
		if err == io.EOF { //读到末尾结束
			break
		} 
		fmt.Println(str)
	}
	fmt.Println("文件读取结束...")
}

最后

以上就是欢呼电脑为你收集整理的Go: 对文件的操作(关于os包的读、写函数)的全部内容,希望文章能够帮你解决Go: 对文件的操作(关于os包的读、写函数)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部