과제: 큰 로그 파일의 마지막 두 줄 읽기 전체 파일을 메모리에 로드하지 않고 이 프로세스를 10초마다 반복합니다.
Stat 함수: 전체 파일 로드를 방지하려면 메모리에 저장되면 os 패키지의 Stat() 함수를 사용하여 파일 길이를 얻을 수 있습니다. 이는 파일 크기를 바이트 단위로 제공합니다.
앞으로 찾기 또는 읽기:
질문에 제공된 예를 고려하세요.
코드 조각:
package main import ( "fmt" "os" "time" ) const MYFILE = "logfile.log" func main() { c := time.Tick(10 * time.Second) for _ = range c { readFile(MYFILE) } } func readFile(fname string) { file, err := os.Open(fname) if err != nil { panic(err) } defer file.Close() buf := make([]byte, 62) stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) if err == nil { fmt.Printf("%s\n", buf) } }
이 예에서는
위 내용은 Go에서 10초마다 대용량 파일의 마지막 줄을 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!