英文:
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
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论