我正在尝试编写一个Go函数,它将读取文本文件中的行,对它们进行排序(按字母顺序),并将它们覆盖回文件。目前,我能够基本模拟cat
,但似乎无法操作read_line中元素的内容。
func sort() {
ff, _ := os.OpenFile(file, os.O_RDWR, 0666)
f := bufio.NewReader(ff)
for {
read_line, _ := f.ReadString('\n')
fmt.Print(read_line)
if read_line == "" {
break
}
}
ff.Close()
}
当我使用ReadString时,如何将每一行存储到一个切片中(或者有更好的方法可以存储它们以便于操作)?然后我会使用sort包类似于这样的方式:
sorted := sort.Strings(lines)
然后,为了写入文件,我正在使用类似于以下内容的东西,尽管我还没有包含它,因为我还没有让“sort”起作用:
io.WriteString(ff, (lines + "\n"))
感谢您提前给出的任何建议!
scanner.Err
。你不需要重新打开文件,只需调用file.Truncate(0)
(忽略不使用第二个文件会导致数据丢失的危险)。而且你没有检查从file.Close()
返回的错误(在编写文件时可能很重要)。 - Dave C