[go] 로컬 파일에서 io.Reader 만들기

로컬 파일을 열고 io.Reader. 그 이유는 io.Reader다음과 같이 사용중인 라이브러리에 a 를 공급해야하기 때문입니다 .

func read(r io.Reader) (results []string) {

}



답변

os.Open 반환 io.Reader

http://play.golang.org/p/BskGT09kxL

package main

import (
    "fmt"
    "io"
    "os"
)

var _ io.Reader = (*os.File)(nil)

func main() {
    fmt.Println("Hello, playground")
}


답변

사용 os.Open () :

func Open (name string) (file * File, err error)

열기는 읽기 위해 명명 된 파일을 엽니 다. 성공하면 반환 된 파일의 메서드를 사용하여 읽을 수 있습니다. 연관된 파일 설명자는 O_RDONLY 모드를 갖습니다. 오류가 있으면 * PathError 유형이됩니다.

반환 된 type 값은 인터페이스를 *os.File구현합니다 io.Reader.


답변

* os.File 유형은 io.Reader 인터페이스를 구현하므로 파일을 Reader로 반환 할 수 있습니다. 그러나 다음과 같이 큰 파일을 읽으려는 의도가있는 경우 bufio 패키지 를 사용하는 것이 좋습니다 .

file, err := os.Open("path/file.ext")
// if err != nil { ... }

return bufio.NewReader(file)


답변

다음은 텍스트 파일을 열고 반환 된 * os.File 인스턴스 f에서 io.Reader를 만드는 예입니다.

package main

import (
    "io"
    "os"
)

func main() {
    f, err := os.Open("somefile.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    var r io.Reader
    r = f
}


답변