GoLang的readLines和writeLines方法
发布时间:2020-12-16 19:02:33 所属栏目:大数据 来源:网络整理
导读:习惯了Python里面对文件的操作简单随意,刚上手Go语言这样类似C语言的文件操作方法,一时还不习惯使用buffer来读取和吸入文件。在python中文件对象可以使用readLines和writeLines来遍历文件的行,十分的方便。 如果在Go语言里面也能有这样的方法就好了,找了
习惯了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:%sn",err) return } for _,line := range lines { fmt.Println(line) } err= writeLines(lines,"a.txt") fmt.Println(err) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |