>백엔드 개발 >Golang >Go에서 동일한 `os.File`에 쓴 후 읽을 때 `io.EOF`를 방지하는 방법은 무엇입니까?

Go에서 동일한 `os.File`에 쓴 후 읽을 때 `io.EOF`를 방지하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 08:53:14259검색

How to Avoid `io.EOF` When Reading After Writing to the Same `os.File` in Go?

Go에서 동일한 *os.File을 읽고 쓰기

문제 이해

Go에서 os를 사용하여 파일에 데이터를 쓸 때 .File, 파일 포인터는 쓰기 후에 파일 끝으로 이동합니다. 이후 동일한 파일 포인터에서 데이터를 읽으려고 하면 파일 포인터가 여전히 파일 끝에 있기 때문에 즉시 io.EOF(End of File) 오류가 발생합니다.

해결 방법

쓰기 후 동일한 파일 포인터에서 데이터를 성공적으로 읽으려면 Seek 메서드를 사용하여 파일 포인터를 파일 시작 부분으로 재설정해야 합니다. 예제 코드를 수정하는 방법은 다음과 같습니다.

// Seek to the beginning of the file before reading
_, err := f.Seek(0, 0)
if err != nil {
    fmt.Println("Error", err)
}

// Read 10 times
r := bufio.NewReader(f)
for i := 0; i < 10; i++ {
    str, _, err := r.ReadLine()
    if err != nil {
        if err == io.EOF {
            fmt.Println("Done")
            return
        }
        fmt.Println("Error", err)
    }
    fmt.Println("Read", string(str))
}

Seek 메서드를 추가하면 파일 포인터가 읽기 전에 파일의 시작 부분으로 재설정되어 후속 읽기 작업에서 문제 없이 기록된 데이터를 검색할 수 있습니다. io.EOF 오류입니다.

위 내용은 Go에서 동일한 `os.File`에 쓴 후 읽을 때 `io.EOF`를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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