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

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

案例

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

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这个时候不要打开文件直接复制文件路径,会报一个文件目录的错误windows

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

在打开文件的路径必须本身手动输入,由于编码有问题编码

打开文件也必须关闭文件,因此在任什么时候候打开一个文件操做后使用延迟执行的defer来进行关闭文件url

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

文件打开模式

  • 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写过的,就不在继续讨论了。.net

文件读取

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

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)
	}
}

博主微信欢迎交流

在这里插入图片描述

相关文章
相关标签/搜索