go语言读写文件的几种方式

package main

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

//使用ioutil读写文件
func ioutil_method(path string){
	//写文件
	//只能写入字节,所以需要转化一下
	content := []byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
	ioutil.WriteFile("a.txt", content, 0644)

	//读文件
	file, err := ioutil.ReadFile(path)
	if err!=nil{
		fmt.Println(err)
		return
	}
	//这里的file一定要加上string,否则会打印一个int数组
	fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用os来读取文件
func os_method(path string){
	//写文件
	f, err:=os.Create("b.txt")
	defer f.Close()
	if err!=nil{
		fmt.Println(err)
		return
	}
	//可以使用f.WriteString写入字符串,也可以使用f.Write写入字节
	f.WriteString("人生の半分は仕方がないでできてる、残りの半分は、帰りたい")
	f.Write([]byte("人生の半分は仕方がないでできてる、残りの半分は、帰りたい"))

	//读文件
	f, err=os.Open("b.txt")
	if err!=nil{
		fmt.Println(err)
		return
	}
	chunks := make([]byte, 1024)
	buf := make([]byte, 1024)
	for {
		//读取文件必须创建一个缓冲区,表示把f里的内容读到buf里面去,会返回一个n表示读取的长度,和err错误信息
		n, err := f.Read(buf)
		if err!=nil && err!=io.EOF{
			fmt.Println(err)
			return
		}
		if 0 == n{
			break
		}
		//把读取的字节添加到chunks里面去
		chunks = append(chunks, buf[: n]...)
	}
	//读取到的chunks转成string
	fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用bufio读取文件
func bufio_method(){
	f,_:=os.Open("a.txt")
	defer f.Close()
	chunks := make([]byte, 1024)
	buf := make([]byte, 1024)
	r := bufio.NewReader(f)
	for {
		//经过bufio.NewReader处理过的f,也就是r,同样可以调用Read
		n, err := r.Read(buf)
		if err!=nil && err!=io.EOF{
			fmt.Println(err)
		}
		if 0 == n{
			break
		}
		chunks = append(chunks, buf[: n]...)
	}
	fmt.Println(string(chunks)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

//使用ioutil.ReadAll读取文件
func readall_method(){
	f, _:=os.Open("a.txt")
	defer f.Close()
	file, _ := ioutil.ReadAll(f)
	fmt.Println(string(file)) //人生の半分は仕方がないでできてる、残りの半分は、帰りたい
}

func main() {
	ioutil_method("a.txt")
	os_method("b.txt")
	bufio_method()
	readall_method()
}

//使用ioutil.ReadAll函数读取文件最好

  

原文地址:https://www.cnblogs.com/traditional/p/9574785.html

时间: 2024-10-28 15:18:23

go语言读写文件的几种方式的相关文章

Java读写文件的几种方式

自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行三种方式来进行文件的操作. import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.F

关于沙盒的读写文件的几种方式

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //    h获取应用沙盒 NSString *homaPath =  NSHomeDirectory(); NSLog(@"%@",homaPath); } /** * 下面的是用  plist  方式 保存 数据 */ -(void)savePlist{ NSString *homePath =  NSHomeDirectory();

Android 读写文件的第一种方式(文件方式)

文件方式保存数据,保存路径为/data/data/<packagename>/files/.有两种模式:MODE_PRIVATE 和 MODE_APPEND,其中 MODE_PRIVATE 是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而 MODE_APPEND 则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件. 1 public void save() { 2 String data = "Data to save"; 3

C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式

前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要操作的Excel文件,并在后面的textBox中显示出文件路径. 设置单元格按钮,可以根据程序设置Excel文件的内容. 退出程序按钮,关闭窗体. 程序源代码 1 using System; 2 using System.Collections.Generic; 3 using System.Com

java读取XML文件的四种方式

java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区&

Simics虚拟机Solaris 8操作系统获取host 系统win7上的文件的两种方式

1 介绍 本文基于的环境设置如下: ? 宿主操作系统:Windows 7 Ultimate ? 寄生操作系统:Solaris 8 SPARC (SunOS 5.8) ? 虚拟环境:Simics 3.0.4 本文假定已在Simics 上安装好Solaris 8 SPARC 操作系统. 动机:一个Unix下可以运行的二进制文件GraphGen,在单独的一台装有Ubuntu的电脑上不能运行,因为该电脑的硬件架构是基于X86的,而GraphGen是SPARC架构下才能运行的程序:在我的笔记本Win7系统

解析Xml文件的三种方式及其特点

解析Xml文件的三种方式 1.Sax解析(simple api  for xml) 使用流式处理的方式,它并不记录所读内容的相关信息.它是一种以事件为驱动的XML API,解析速度快,占用内存少.使用回调函数来实现. 1 class MyDefaultHander extends DefaultHandler{ 2 private List<Student> list; 3 private Student student; 4 5 @Override 6 public void startDo

Android开发之合并文件的几种方式

下面介绍合并文件的几种方式,并通过合并amr文件来举例介绍合并文件的具体流程.amr格式的文件头是6字节,所以在进行文件合并的时候要减去除第一个文件以外的其他文件的文件头. 注意:不同文件的文件头是不一样的,所以在合并的时候根据不同文件相应的减去合并文件的文件头. 步骤一:获取要合并的文件及创建合并后保存的文件 /**用于存放要合并的文件的集合**/ List<File>tempFiles=new ArrayList<File>(); /**合并之后的文件**/ File fina

Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式

转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-htt