GO 文件读取常用的方法

方式1: 一行一行的方式读取

其中常用的方法就有:ReadString,ReadLine,ReadBytes

  • ReadLine 返回单个行,不包括行尾字节,就是说,返回的内容不包括\n或者\r\n,返回的类型为[]byte
  • ReadString(‘\n‘) 以分隔字符方式读取,遇到传入的分割字符时就返回结果,返回的结果包含分隔字符本身,返回的类型为string,比如传入\n,代码遇到\n字符就返回,而文件行尾都是以\n结尾,所以ReadString(‘\n‘)就实现了分行读取
  • ReadBytes(‘\n‘) 和ReadString方法差不多,只是结果以[]byte类型返回数据

** 文件读取需要注意点:**

  • 记得处理完后关闭文件,以防止内存泄露,占用操作系统文件句柄数
  • 文件读取结束后返回的err类型是io.EOF,可以使用这个来跳出循环

方式一源码例子:

package main

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

func main() {
	// 读取一个文件的内容
	file, err := os.Open("./abc.txt")
	if err != nil {
		fmt.Println("open file err:", err.Error())
		return
	}

	// 处理结束后关闭文件
	defer file.Close()

	// 使用bufio读取
	r := bufio.NewReader(file)

	for {
		// 分行读取文件  ReadLine返回单个行,不包括行尾字节(\n  或 \r\n)
		//data, _, err := r.ReadLine()

		// 以分隔符形式读取,比如此处设置的分割符是\n,则遇到\n就返回,且包括\n本身 直接返回字符串
		//str, err := r.ReadString(‘\n‘)

		// 以分隔符形式读取,比如此处设置的分割符是\n,则遇到\n就返回,且包括\n本身 直接返回字节数数组
		data, err := r.ReadBytes(‘\n‘)

		// 读取到末尾退出
		if err == io.EOF {
			break
		}

		if err != nil {
			fmt.Println("read err", err.Error())
			break
		}

		// 打印出内容
		fmt.Printf("%v", string(data))
	}
}

方式2: 一次性读取

一次性读取适合读取内容比较小的文件,大文件读取建议使用第一种方式

一次性读取可以使用ioutil.ReadFile方法,次方法不需要关闭文件,源码例子如下:

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	// 使用ioutil一次性读取文件
	data, err := ioutil.ReadFile("./abc.txt")
	if err != nil {
		fmt.Println("read file err:", err.Error())
		return
	}

	// 打印文件内容
	fmt.Println(string(data))
}

来源:网站优化公司

原文地址:https://www.cnblogs.com/1994jinnan/p/12037488.html

时间: 2024-10-11 11:17:30

GO 文件读取常用的方法的相关文章

文件操作常用工具方法

写字节到文件: /** * 工具方法,写bytes到文件中 如果写入过程出现异常就删除文件 * * @param bytes * @param file */ public static void writeBytesToFile(byte[] bytes, File file) { RandomAccessFile access = null; try { access = new RandomAccessFile(file, "rw"); access.write(bytes);

javascript读取xml文件读取节点数据的例子

分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject

取EXCEL文件的3种方法

1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;"; OleDb

OC中文件读取类(NSFileHandle)介绍和常用使用方法

NSFileHandle NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建 NSFileManager *fileManage = [NSFileManager defaultManager]; BOOL success = [fileManage createFileAtPath:tagetPath contents:nil attributes:nil]; if (success) { NSLog(@"cr

Objective-C OC中文件读取类(NSFileHandle)介绍和常用使用方法

转自http://www.it165.net/pro/html/201402/9100.html NSFileHandle NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) NSFileHandle类主要对文件的内容进行读取和写入操作 NSFileHandle处理文件的步骤 1:创建一个NSFileHandle对象 2:对打开的文件进行I/O操作 3:关闭文件对象操作 常用处理方法 view sourceprint? 01.+ (id)fileHandleForRea

Java 读取文件的几种方法

1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 5.将内容追加到文件尾部 /*** 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.*/ public class ReadFromFile { public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.o

java 读取文件的常用方式

1.读取: public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); // 一次读一

Shell逐行读取文件的3种方法

方法1:while循环中执行效率最高,最常用的方法. while read linedoecho $linedone  < filename 注释:这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样. 方法2 : 管道法: cat $FILENAME | while read LINE cat filename | while read linedoecho $linedone 注释:当遇见管道的时候管道左边的命令的输出会作为管道右边命令的输入然后被输入出来. 方法3  

[C++基础]一个比较常用的配置文件/初始化文件读取程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记