【Go学习】 逐行读写文件
来源:互联网 发布:企业彩铃录音软件 编辑:程序博客网 时间:2024/04/26 15:30
简单的翻看了一下Go的io/ioutil
居然没又逐行读取的接口,在网上找到一份代码,发现其还比较使用,打算撸个例子试试看,网上的逐行读取的接口如下:
func ReadLine(fileName string, handler func(string)) error { f, err := os.Open(fileName) if err != nil { return err } buf := bufio.NewReader(f) for { line, err := buf.ReadString('\n') line = strings.TrimSpace(line) handler(line) if err != nil { if err == io.EOF { return nil } return err } } return nil }
自己做了一个简单的读取文件,写文件的例子:
package mainimport ( "bufio" "fmt" "io" "os" "strings")func ReadLine(w *bufio.Writer,fileName string, handler func(*bufio.Writer,string)) error { f, err := os.Open(fileName) if err != nil { return err } buf := bufio.NewReader(f) for { line, err := buf.ReadString('\n') line = strings.TrimSpace(line) if len(line) != 0 { handler(w,line) } if err != nil { if err == io.EOF { return nil } return err } } return nil}func parseLineString(w *bufio.Writer,line string) { splits := strings.SplitN(line," ",3) //fmt.Println("len(splits) = ",len(splits)) if len(splits) != 3 { fmt.Println("Error file Format!") return } /* for index,split := range splits { fmt.Printf("index = %d split = %s \n",index,split) } fmt.Println("______________________________") */ saveResultToFile(w,splits)}func saveResultToFile(w *bufio.Writer,splits []string) { str := "<tr>" + "<td><font color=\"" + splits[1] + "\">" + splits[0] + "</font></td>" + "<td><font color=\"" + splits[1] + "\">" + splits[1] + "</font></td>" + "<td bgcolor=" + splits[1] + ">" + splits[2] + "</td>" + "</tr>" + "\n"; //fmt.Println(str) _,err := w.WriteString(str) check(err) w.Flush()}func check(e error){ if e != nil { panic(e) }}func main() { f, err := os.Create("result.txt") check(err) defer f.Close() w := bufio.NewWriter(f) err = ReadLine(w,"test.txt", parseLineString) check(err)}
test.txt文件如下:
AliceBlue #F0F8FF rgb(240, 248, 255)AntiqueWhite #FAEBD7 rgb(250, 235, 215)Aqua #00FFFF rgb(0, 255, 255)Aquamarine #7FFFD4 rgb(127, 255, 212)Azure #F0FFFF rgb(240, 255, 255)
运行后结果文件的内容如下:
<tr><td><font color="#F0F8FF">AliceBlue</font></td><td><font color="#F0F8FF">#F0F8FF</font></td><td bgcolor=#F0F8FF>rgb(240, 248, 255)</td></tr><tr><td><font color="#FAEBD7">AntiqueWhite</font></td><td><font color="#FAEBD7">#FAEBD7</font></td><td bgcolor=#FAEBD7>rgb(250, 235, 215)</td></tr><tr><td><font color="#00FFFF">Aqua</font></td><td><font color="#00FFFF">#00FFFF</font></td><td bgcolor=#00FFFF>rgb(0, 255, 255)</td></tr><tr><td><font color="#7FFFD4">Aquamarine</font></td><td><font color="#7FFFD4">#7FFFD4</font></td><td bgcolor=#7FFFD4>rgb(127, 255, 212)</td></tr><tr><td><font color="#F0FFFF">Azure</font></td><td><font color="#F0FFFF">#F0FFFF</font></td><td bgcolor=#F0FFFF>rgb(240, 255, 255)</td></tr>
其实这个是用来我上一篇文章转载别人博客—-CSDN-markdown编辑器语法——字体、字号与颜色,背景色的时候用到,因为copy过去的颜色名列表不能直接用,所以刚好用Go写一个简单的小例子试试。
阅读全文
0 0
- 【Go学习】 逐行读写文件
- VC逐行读写文件
- C++逐行读写文件
- VC 逐行读写TXT文件
- python逐行读写txt文件
- Java 逐行读写 TXT 文件
- Java逐行读写TXT文件
- Go语言_Go_Golang 逐行读取文件
- Go语言_Go_Golang 逐行读取文件
- VC逐行读写日志文件(TXT)
- C# 向文本文件中逐行读写文件
- CStdioFile类逐行读写日志记录文件
- python学习(逐行读取文件)
- GO 语言 读写文件
- go语言 文件读写
- Go 文件读写
- go语言文件读写
- Go 文件读写操作
- 日常笔记in_addr
- ubuntu 16.04 安装ROS Kinect v2的驱动
- python科学计算——数据可视化(2) Seaborn
- 【转载】推荐系统原理介绍
- hdu 1217 套利 (floyd多源最短路)
- 【Go学习】 逐行读写文件
- Linux下安装Nginx
- openlayer之加载wfs服务
- Java多线程系列--【基础篇08】- join()
- 【Java学习笔记】接口——基于Java SE8
- Makefile基础
- Micro Python 入门教程---第二个Micro Python 程序
- linux的jenkins安装与使用jenkins自动化打包maven项目部署到tomcat
- PHP从入门到精通 例6.6 应用正则表达式对用户注册信息进行验证