>  기사  >  백엔드 개발  >  Go에서 스캐너를 사용하여 특정 줄 번호에서 파일을 읽는 방법은 무엇입니까?

Go에서 스캐너를 사용하여 특정 줄 번호에서 파일을 읽는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-06 15:03:03774검색

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

스캐너를 사용하여 특정 줄 번호에서 파일 읽기

Go에서 bufio.Scanner 패키지는 파일을 한 줄씩 읽는 편리한 방법을 제공합니다. 그러나 기본적으로 Scanner는 특정 줄 번호를 건너뛰거나 읽는 방법을 제공하지 않습니다. 이를 달성하려면 Scanner의 기본 동작을 수정해야 합니다.

사용자 정의 토큰 분할 기능을 사용한 확장 솔루션

라인 경계를 결정하는 사용자 정의 분할 기능을 생성하여 Scanner를 확장할 수 있습니다. 파일 위치를 유지합니다. 다음 줄 바꿈 및 줄을 토큰으로 바이트 단위로 반환하는 분할 함수를 정의해 보겠습니다.

func scanLinesWithPosition(data []byte, atEOF bool) (advance int, token []byte, err error) {
    advance, token, err = bufio.ScanLines(data, atEOF)
    return // Advance and Token are calculated
}

다음으로 Scanner.Split 메서드를 사용하여 사용자 지정 분할 함수를 설정할 수 있습니다.

scanner := bufio.NewScanner(inputFile)
scanner.Split(scanLinesWithPosition)

줄 위치 처리

사용자 지정 분할 기능을 사용하면 파일 위치를 유지하면서 줄을 읽을 수 있습니다. 다음은 기존 코드의 수정된 버전입니다.

// ... (Code from your post)

func main() {
    // ... (Code from your post)

    scanner := bufio.NewScanner(inputFile)
    scanner.Split(scanLinesWithPosition)

    var currentLine int
    for scanner.Scan() {
        currentLine++
        if currentLine > progress {
            fmt.Println(scanner.Text())
        }
    }

    // ... (Code from your post)
}

이제 코드는 줄을 읽고, 이미 처리된 줄을 건너뛰고(진행 변수에 따라) 현재 줄 번호를 유지합니다. 진행값을 조정하여 출발선 번호를 조절할 수 있습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.