我无法file.ReadLine在Go中找到功能.我可以弄清楚如何快速写一个,但只是想知道我是否在这里忽略了一些东西.如何逐行读取文件?
能够将文本文件读入(或写入)字符串数组的能力是我认为相当普遍的要求.当从最初需要访问数据库的语言开始时,它也非常有用.Golang中是否存在一个?
例如
func ReadLines(sFileName string, iMinLines int) ([]string, bool) {
Run Code Online (Sandbox Code Playgroud)
和
func WriteLines(saBuff[]string, sFilename string) (bool) {
Run Code Online (Sandbox Code Playgroud)
我宁愿使用现有的而不是复制.
如何从大日志文件中读取最后两行而不将其完全加载到内存中?
我需要每10秒阅读一次(在Win机器上)...而且我试图读取最后一行...
package main
import (
"fmt"
"time"
"os"
)
const MYFILE = "logfile.log"
func main() {
c := time.Tick(10 * time.Second)
for now := range c {
readFile(MYFILE)
}
}
func readFile(fname string){
file, err:=os.Open(fname)
if err!=nil{
panic(err)
}
buf:=make([]byte, 32)
c, err:=file.ReadAt(32, ????)
fmt.Printf("%s\n", c)
}
Run Code Online (Sandbox Code Playgroud)
日志文件类似于:
07/25/2013 11:55:42.400, 0.559
07/25/2013 11:55:52.200, 0.477
07/25/2013 11:56:02.000, 0.463
07/25/2013 11:56:11.800, 0.454
07/25/2013 11:56:21.600, 0.424
07/25/2013 11:56:31.400, 0.382
07/25/2013 11:56:41.200, 0.353
07/25/2013 11:56:51.000, 0.384
07/25/2013 11:57:00.800, 0.393
07/25/2013 11:57:10.600, 0.456
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想在文件名给出的文件中一次读取和处理 1024 个字节。我不明白如何正确构建外循环,尤其是适应缓冲区包含少于 1024 字节的最终步幅
我尝试过的:
fs, _ := os.Open(filename)
defer fs.Close()
n := 1024 // 1kb
buff := make([]byte, n)
for {
buff = make([]byte, n) // is this initialized correctly?
n1, err := fs.Read(buff)
if err != nil {
if err == io.EOF {
break
}
fmt.Println(err)
break
}
fmt.Println("read n1 bytes...", n1)
fmt.Println(buff)
}
Run Code Online (Sandbox Code Playgroud)
我看过以下资源: