initial import

This commit is contained in:
kevin
2020-07-26 17:09:05 +08:00
commit 7e3a369a8f
647 changed files with 54754 additions and 0 deletions

39
core/iox/textfile.go Normal file
View File

@@ -0,0 +1,39 @@
package iox
import (
"bytes"
"io"
"os"
)
const bufSize = 32 * 1024
func CountLines(file string) (int, error) {
f, err := os.Open(file)
if err != nil {
return 0, err
}
defer f.Close()
var noEol bool
buf := make([]byte, bufSize)
count := 0
lineSep := []byte{'\n'}
for {
c, err := f.Read(buf)
count += bytes.Count(buf[:c], lineSep)
switch {
case err == io.EOF:
if noEol {
count++
}
return count, nil
case err != nil:
return count, err
}
noEol = c > 0 && buf[c-1] != '\n'
}
}