GoLang的readLines和writeLines方法

习惯了Python里面对文件的操作简单随意,刚上手Go语言这样类似C语言的文件操作方法,一时还不习惯使用buffer来读取和吸入文件。在python中文件对象可以使用readLines和writeLines来遍历文件的行,十分的方便。
如果在Go语言里面也能有这样的方法就好了,找了半天API,还是没有收获。求人不如求己,自己写一个。
代码如下:

package main

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


func readLines(path string)(lines [] string,err error){
var (
file *os.File
part [] byte
prefix bool
)

if file, err = os.Open(path); err != nil {
return
}

reader := bufio.NewReader(file)
buffer := bytes.NewBuffer(make([]byte,1024))

for {
if part, prefix, err = reader.ReadLine();err != nil {
break
}
buffer.Write(part)
if !prefix {
lines = append(lines,buffer.String())
buffer.Reset()
}
}
if err == io.EOF {
err = nil
}
return
}


func writeLines(lines [] string,path string)(err error){
var file *os.File

if file,err = os.Create(path); err != nil{
return
}

defer file.Close()

for _,elem := range lines {
_,err := file.WriteString(strings.TrimSpace(elem)+"\n")
if err != nil {
fmt.Println(err)
break
}
}
return
}

func main(){
lines, err := readLines("5906376")
if err != nil{
fmt.Println("Error:%s\n",err)
return
}
for _,line := range lines {
fmt.Println(line)
}

err= writeLines(lines,"a.txt")
fmt.Println(err)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值