【GO】文件读写:打开关闭+打开模式+文件权限+文件读取

咔咔博客之文件打开与关闭

案例

文件的操作使用os包
在这里插入图片描述

package main

import (
	"fmt"
	"os"
	"time"
)

func main() {
	file, e := os.Open("D:/kaka.txt")
	if e != nil {
		fmt.Println("文件打开失败")
	} else {
		fmt.Println("文件打开成功")
	}

	defer func() {
		file.Close()
		fmt.Println("文件已关闭")
	}()
	fmt.Println("愉快滴欣赏avi艺术")
	time.Sleep(3 * time.Second)
}

注意点

在os.open时,如果你的操作系统时windows这个时候不要打开文件直接复制文件路径,会报一个文件目录的错误

The filename, directory name, or volume label syntax is incorrect.

在打开文件的路径必须自己手动输入,因为编码有问题

打开文件也必须关闭文件,所以在任何时候打开一个文件操作后使用延迟执行的defer来进行关闭文件

defer是延迟执行的关键词,在所有程序都执行完才会执行的代码

文件打开模式

  • 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_TRUNC int = syscall.O_TRUNC // 覆盖模式

文件权限

权限详解有什么问题可以看这篇文章,详细的说明了权限的问题。
这里简单的说一下 r w x 分别代表的是什么意思
r表示可读
w表示可写
x表示可执行

任何文件都有使用者,群组,other的概念。 权限所代表的是r = 4 w = 2 x = 1 这块的知识是在linux写过的,就不在继续讨论了。

文件读取

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

func main() {
	file, e := os.OpenFile("D:/kaka.txt", os.O_RDONLY, 0666)
	if e != nil {
		fmt.Println("文件打开失败:err", e)
		return
	} else {
		fmt.Println("文件打开成功")
	}

	// 打开时立刻挂起关闭程序
	defer func() {
		file.Close()
		fmt.Println("文件关闭成功")
	}()

	// 创建文件的读取器
	reader := bufio.NewReader(file)
	// 死循环读取
	for {
		// 以换行符为界,分批次读取数据,得到readString
		readString, e := reader.ReadString('\n')
		if e != nil {
			fmt.Println("文件读取失败;err", e)
			// 如果已到文件末尾,则直接结束
			if e == io.EOF {
				break
			}
		}
		fmt.Print(readString)
	}
	fmt.Println("读取结束")
}

简易的数据读取

在这里插入图片描述

func main() {
	bytes, err := ioutil.ReadFile("d:/kaka.txt")
	if err != nil {
		fmt.Println("读取失败,err=", err)
		return
	} else {
		contentStr := string(bytes)
		fmt.Println(contentStr)
	}
}

博主微信欢迎交流

在这里插入图片描述

发布了859 篇原创文章 · 获赞 131 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/fangkang7/article/details/104946726
今日推荐