Golang 文件操作【防备忘】

Golang 操作

  1. 文件概念
    在这里插2述
上图中,返回的这个file指针,有三种叫法:
文件对象、文件指针、文件句柄    都可以
我们在理解的时候,其实file就是一个指针,这样更容易理解。
  1. 文件的打开、关闭
file,err := os.Open("路径+文件名")
if err != nil{
	...
}

err = file.Close()    //文件关闭
if err != nil{
	...
}
  1. 用带缓冲的Reader读取大文件
import "bufio"   //主要是,你知道有这个个包

reader := bufio.NewReader(file)
for {
	str, err := reader.ReadString('\n')
	fmt.Print(str)
	if err == io.EOF { //读到文件尾
		break
	}
}
  1. 一次性读取小文件
import "io/ioutil"   

file := "d:/test.txt"
content, err := ioutil.ReadFile(file)
if err != nil {
	fmt.Println(err)
}
fmt.Printf("%v", string(content))
  1. 写文件
主要是这个函数
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
参数一:文件路径
参数二:打开方式
参数三:控制权限,linux下用,用到再说吧

打开方式
const (
    O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
    O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
    O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件
    O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
    O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件
    O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用,文件必须不存在
    O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/O
    O_TRUNC  int = syscall.O_TRUNC  // 如果可能,打开时清空文件
)

过程:
filePath := "d:/anc.txt"
file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
if err != nil {
	fmt.Printf("Open is %v\n", err)
	return
}

str := "鬼怪\n"

writer := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
	writer.WriteString(str)   //这个只是写道缓冲内存中
}

writer.Flush()   //这个真正的写到磁盘中
  1. 判断文件是否存在
func PathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋山刀名鱼丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值