博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go 语言学习八 - 文件读写
阅读量:5166 次
发布时间:2019-06-13

本文共 1205 字,大约阅读时间需要 4 分钟。

package mainimport (	"bufio"	"fmt"	"io"	"os")func main() {	var inFile, outFile *os.File	if inFile, err := os.Open("in.txt"); inFile == nil { //inFile 是指针类型可以赋值nil (1)		fmt.Println(err.Error())		inFile = os.Stdin	}	defer inFile.Close()	if outFile, err := os.OpenFile("out.txt", os.O_RDWR, 0766); err != nil {		fmt.Println(outFile) 这里必须用一下outFile , 否则go编译器扯淡报错outFile未使用过,或者也可以象(1)那样反过来不判断err而判断另一个不空		fmt.Println(err.Error())		outFile = os.Stdout	}	defer outFile.Close()	reader, writer := bufio.NewReader(inFile), bufio.NewWriter(outFile)	var s bytes.Buffer	for {		line, err := reader.ReadString('\n') //nil 只能赋值给指针和引用类型,报错 can not convert nil to string		if err != nil && err != io.EOF { //真出错了,而不是到结尾了			break		}		//bytes.Buffer 类似于 java 中的 StringBuilder 处理大量字符串连接非常好		s.WriteString(line)		//字符串是值类型不能有其他值,也不能用空字符串标识到了文件结尾,这会和空行混淆		if err == io.EOF { //到结尾了			break		}	}	/*	//另一种感觉更清晰的写法	for line, err := reader.ReadString('\n'); err == nil || err == io.EOF; line, err = reader.ReadString('\n') {		s.WriteString(line)		if err == io.EOF {			break		}	}	*/	if _, err := writer.WriteString(s); err == nil {		writer.Flush()	} else {		fmt.Println(err.Error())	}}

转载于:https://www.cnblogs.com/scala/p/9570508.html

你可能感兴趣的文章
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
【UVA】434-Matty's Blocks
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>