go文件基本操作

一、文件读操作

文件内容如下:

powershell 复制代码
水陆草木之花,可爱者甚蕃。
晋陶渊明独爱菊。自李唐来,世人甚爱牡丹。
予独爱莲之出淤泥而不染,濯清涟而不妖,中通外直,不蔓不枝,香远益清,亭亭净植,可远观而不可亵玩焉。
予谓菊,花之隐逸者也;
牡丹,花之富贵者也;
莲,花之君子者也。
噫!菊之爱,陶后鲜有闻。
莲之爱,同予者何人?牡丹之爱,宜乎众矣!

1.按行读取方式一

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	//打开文件
	file, _ := os.Open("./file/data.txt")
	
    //创建一个文件阅读器,将文件句柄传递给阅读器
	reader := bufio.NewReader(file)
    
    //使用阅读器,按照行开始读取
	data, _, _ := reader.ReadLine()
	data1, _, _ := reader.ReadLine()
	data2, _, _ := reader.ReadLine()

	fmt.Println("data = ", string(data))
	fmt.Println("data1 = ", string(data1))
	fmt.Println("data2 = ", string(data2))

	file.Close()
}

执行结果如下:

powershell 复制代码
data =  水陆草木之花,可爱者甚蕃。
data1 =  晋陶渊明独爱菊。自李唐来,世人甚爱牡丹。
data2 =  予独爱莲之出淤泥而不染,濯清涟而不妖,中通外直,不蔓不枝,香远益清,亭亭净植,可远观而不可亵玩焉。

2.按行读取方式二

reader.Readline()函数读取出来得内容是字节串,需要使用string转换一下数据。这时候另外一种方式就出现了,那就是reader.Readstring()

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	file, _ := os.Open("./file/data.txt")

	reader := bufio.NewReader(file)
	data, _ := reader.ReadString('\n')
	data1, _ := reader.ReadString('\n')
	data2, _ := reader.ReadString('\n')

	fmt.Println("data = ", data)
	fmt.Println("data1 = ", data1)
	fmt.Println("data2 = ", data2)
	file.Close()

}

按照一定行数读取

go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	file, _ := os.Open("./file/data.txt")

	reader := bufio.NewReader(file)
	
	//读取10行
	for i := 0; i <= 10; i++ {
		data, _ := reader.ReadString('\n')
		if data != "" {
			fmt.Print("data = ", data)
		}

	}

	file.Close()

}

3.读取文件全部内容

适用于读取小文件.

go 复制代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	//ioutil默认会打开文件
	data, _ := ioutil.ReadFile("./file/data.txt")
	fmt.Println("data = ", string(data))

}

二、文件写操作

1.按行写入数据

go 复制代码
package main

import (
	"os"
)

func main() {
	data := "我是一条测试数据\n"
	file_path := "./file/data2.txt"

	file, _ := os.OpenFile(file_path, os.O_CREATE|os.O_APPEND, 0666)
	file.WriteString(data)

	file.Close()
}

2.读内容并写入新文件

go 复制代码
package main

import (
	"io/ioutil"
)

func main() {

	read_file_path := "./file/data.txt"
	write_file_path := "./file/data3.txt"

	data, _ := ioutil.ReadFile(read_file_path)
	ioutil.WriteFile(write_file_path, data, 0666)

}
相关推荐
李匠202419 分钟前
C++GO语言微服务之图片、短信验证码生成及存储
开发语言·c++·微服务·golang
IT猿手2 小时前
基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
神经网络·算法·matlab·人机交互·无人机·强化学习·无人机三维路径规划
Vone_665 小时前
node.js 邮箱验证服务器搭建
运维·服务器·node.js
万能程序员-传康Kk5 小时前
旅游推荐数据分析可视化系统算法
算法·数据分析·旅游
PXM的算法星球5 小时前
【并发编程基石】CAS无锁算法详解:原理、实现与应用场景
算法
ll7788115 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
烨然若神人~5 小时前
算法第十七天|654. 最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
算法
丢丢丢丢丢丢~5 小时前
apache2的默认html修改
linux·运维·服务器
wusam5 小时前
Linux系统管理与编程20:Apache
linux·运维·服务器·apache·shell编程
爱coding的橙子5 小时前
每日算法刷题Day2 5.10:leetcode数组1道题3种解法,用时40min
算法·leetcode