Create a io.Reader from a local file

huangapple go评论71阅读模式
英文:

Create a io.Reader from a local file

问题

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

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

}
英文:

I would like to open a local file, and return a io.Reader. The reason is that I need to feed a io.Reader to a library I am using, like:

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

}

答案1

得分: 147

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

答案2

得分: 54

使用os.Open()函数:

> func Open(name string) (file File, err error)
>
> Open函数用于打开指定的文件进行读取。如果成功,返回的文件对象可以用于读取;关联的文件描述符的模式为O_RDONLY。如果发生错误,错误类型为
PathError。

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

英文:

Use os.Open():

> func Open(name string) (file *File, err error)
>
> Open opens the named
> file for reading. If successful, methods on the returned file can be
> used for reading; the associated file descriptor has mode O_RDONLY. If
> there is an error, it will be of type *PathError.

The returned value of type *os.File implements the io.Reader interface.

答案3

得分: 40

类型*os.File实现了io.Reader接口,因此您可以将文件作为Reader返回。
但是,如果您打算读取大文件,我建议您使用bufio包,类似于以下方式:

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

return bufio.NewReader(file)
英文:

The type *os.File implements the io.Reader interface, so you can return the file as a Reader.
But I recommend you to use the bufio package if you have intentions of read big files, something like this:

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

return bufio.NewReader(file)

答案4

得分: 9

这是一个示例,我们在其中打开一个文本文件,并从返回的*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
}
英文:

Here is an example where we open a text file and create an io.Reader from the returned *os.File instance f

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
}

huangapple
  • 本文由 发表于 2014年9月5日 09:05:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/25677235.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定