Yerel bir dosya açmak ve bir io.Reader
. Bunun nedeni, kullandığım io.Reader
bir kitaplığa a beslemem gerekmesidir , örneğin:
func read(r io.Reader) (results []string) {
}
Yerel bir dosya açmak ve bir io.Reader
. Bunun nedeni, kullandığım io.Reader
bir kitaplığa a beslemem gerekmesidir , örneğin:
func read(r io.Reader) (results []string) {
}
Yanıtlar:
os.Open
döndürür 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")
}
nil
bir os.File
. (Bu durumda, gerçekten. İçinden bir şey yapamaz) Ve var _ io.Reader = (*os.File)(nil)
atama derleyici kontrol yapar *os.File
bir olduğu io.Reader
(veya başka atama geçerli olmaz). Eğer Oyun gidip değiştirirseniz *os.File
için *os.Process
size o arabirimini tatmin olmayan şeyler için üretir hata görürsünüz.
func (f *File) Read(b []byte) (n int, err error)
, aynısı Reader
.
Os.Open () kullanın :
func Open (ad dizesi) (dosya * Dosya, hata hatası)
Aç, adlandırılmış dosyayı okumak için açar. Başarılı olursa, döndürülen dosyadaki yöntemler okumak için kullanılabilir; ilişkili dosya tanımlayıcı O_RDONLY moduna sahiptir. Bir hata varsa, * PathError türünde olacaktır.
Tipin döndürülen değeri arabirimi *os.File
uygular io.Reader
.
* Os.File türü io.Reader arayüzünü uygular, böylece dosyayı Reader olarak döndürebilirsiniz. Ancak , büyük dosyaları okumak gibi bir niyetiniz varsa bufio paketini kullanmanızı tavsiye ederim.
file, err := os.Open("path/file.ext")
// if err != nil { ... }
return bufio.NewReader(file)
bufio
büyük dosyalar için önerdiğinizi açıklar mısınız?
path/file.ext
. Başka hiçbir cevap ne os.File
olduğunu açıklamadı.