文件

创建一个测试文件
image
代码测试:

func main() {
	// 打开文件
	file, err := os.Open("E:/test/Test.txt")
	if err != nil { // err不为空,说明报错
		fmt.Println("文件打开出错:", err)
	}
	fmt.Printf("文件:%v", file) // 文件:&{0xc00010a780}

	// 关闭文件:
	err2 := file.Close()
	if err2 != nil {
		fmt.Println("关闭文件失败")
	}
}

io引入

image

读取文件

func main() {
	// 不需要进行流的打开/关闭操作,这些封装在ReadFile函数里面了
	// 读取文件,返回:[]byte, err
	file, err := ioutil.ReadFile("E:/test/Test.txt")
	if err != nil {
		fmt.Println("读取有误:", err)
	}
	fmt.Printf("%v", string(file)) // hello,golang
}

使用带缓冲区的方式:
比如这个文件的内容很多,有很多行

func main() {
	// 打开文件
	file, err := os.Open("E:/test/Test.txt")
	if err != nil {
		fmt.Println("文件打开失败")
	}
	// 函数退出时,让file关闭,防止内存泄露
	defer file.Close()

	// 创建一个流
	reader := bufio.NewReader(file)
	// 进行读取操作
	for {
		// 读取到换行就结束
		str, err := reader.ReadString('\n')
		// io.EOF表示读取到文件结尾
		if err == io.EOF {
			break
		}
		// 如果没有读取到文件结尾,就正常输出
		fmt.Println(str)
	}
	// 结束
	fmt.Println("文件读取成功,并全部读取完毕")
}

打印:
image

写出文件

func main() {
	// 写入文件:
	// 先打开文件,在E:/test目录下会生成一个文件demo.txt
	// 参数2:文件打开模式, 参数3:权限控制
	file, err := os.OpenFile("E:/test/demo.txt", os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
	if err != nil {
		fmt.Println("打开文件失败:", err)
	}
	// 及时关闭文件
	defer file.Close()

	// 写入文件操作: IO流 --> 缓冲输出流(带缓冲区)
	writer := bufio.NewWriter(file)
	// 写入10句你好到缓冲区里面
	for i := 0; i < 10; i++ {
		writer.WriteString("你好")
	}
	// 刷新数据,把数据刷到磁盘
	writer.Flush()

	// 查看一下0666是什么权限,代表什么意思
	s := os.FileMode(0666).String()
	fmt.Println(s)	// -rw-rw-rw-
}

允许完代码,查看对应路径下的文件,写入成功
image

文件复制操作

就是去读一个文件,然后把这个文件的内容写出去

func main() {
	// 定义源文件
	file1Path := "E:/test/demo.txt"
	// 定义目标文件
	file2Path := "E:/test/demo2.txt"

	// 对文件进行读取
	content, err := ioutil.ReadFile(file1Path)
	if err != nil {
		fmt.Println("读取有问题")
		return
	}
	// 写出文件
	err = ioutil.WriteFile(file2Path, content, 0666)
	if err != nil {
		fmt.Println("写出失败")
	}
}

运行完代码后,到对应目录查看写出去复制好的文件
image

原文地址:http://www.cnblogs.com/abiu/p/16386901.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性