golang:从本地文件创建一个io.Reader

问题描述 投票:54回答:3

我想打开一个本地文件,然后返回一个io.Reader。原因是我需要将io.Reader提供给我正在使用的库,例如:

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

}
go
3个回答
71
投票

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")
}

31
投票

使用os.Open()

func Open(名称字符串)(文件*文件,错误错误)

打开打开指定的文件进行阅读。如果成功,返回文件上的方法可用于读取;关联的文件描述符具有模式O_RDONLY。如果有错误,则其类型为* PathError。

*os.File类型的返回值实现了io.Reader接口。


16
投票

类型* os.File实现了io.Reader接口,因此您可以将文件作为Reader返回。但是我建议你使用bufio包,如果你有读取大文件的意图,如下所示:

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

return bufio.NewReader(file)
© www.soinside.com 2019 - 2024. All rights reserved.