> 백엔드 개발 > Golang > Go에서 bufio.Scanner를 사용하여 특정 줄 번호부터 시작하는 파일을 읽는 방법은 무엇입니까?

Go에서 bufio.Scanner를 사용하여 특정 줄 번호부터 시작하는 파일을 읽는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-06 02:41:02
원래의
732명이 탐색했습니다.

How to Read a File Starting from a Specific Line Number Using bufio.Scanner in Go?

스캐너를 사용하여 특정 줄 번호부터 시작하는 파일 읽기

Go에서는 bufio.Scanner를 사용하여 파일 줄을 읽을 수 있습니다. 줄로. 그러나 bufio.Scanner는 특정 줄 번호부터 읽기를 시작할 수 있는 내장 옵션을 제공하지 않습니다.

다음은 줄을 건너뛰고 읽기를 시작할 수 있는 사용자 정의 SplitFunc로 bufio.Scanner를 확장하는 방법입니다. 원하는 줄 번호:

func scannerWithStartLine(input io.ReadSeeker, start int64) (*bufio.Scanner, error) {
    if _, err := input.Seek(start, 0); err != nil {
        return nil, err
    }

    scanner := bufio.NewScanner(input)

    scanner.Split(func(data []byte, atEOF bool) (n int, err error) {
        if atEOF && len(data) == 0 {
            return 0, io.EOF
        }
        for i := 0; i < len(data); i++ {
            if data[i] == '\n' {
                return i + 1, nil
            }
        }
        return 0, nil
    })

    return scanner, nil
}
로그인 후 복사

이 함수는 io.ReadSeeker(예: 파일)와 시작 줄 번호를 사용하고 시작 줄 번호에 도달할 때까지 줄을 건너뛰는 bufio.Scanner를 반환합니다.

이 확장된 bufio.Scanner를 사용하려면 다음 단계를 따르세요.

  1. 파일을 열고 시작 줄 번호를 설정합니다.
  2. bufio.Scanner를 만듭니다. scannerWithStartLine 함수를 사용합니다.
  3. scanner.Scan()을 호출하여 지정된 줄 번호부터 시작하여 파일의 줄을 읽습니다.

예는 다음과 같습니다.

file, err := os.Open("input.txt")
if err != nil {
    // Handle error
}

startLine := 5

scanner, err := scannerWithStartLine(file, startLine)
if err != nil {
    // Handle error
}

for scanner.Scan() {
    fmt.Println(scanner.Text())
}
로그인 후 복사

이 코드는 "input.txt" 파일의 5번째 줄부터 읽습니다.

위 내용은 Go에서 bufio.Scanner를 사용하여 특정 줄 번호부터 시작하는 파일을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿