Yerel bir dosya açmak ve bir io.Reader. Bunun nedeni, kullandığım io.Readerbir 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.Readerbir 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")
}
nilbir os.File. (Bu durumda, gerçekten. İçinden bir şey yapamaz) Ve var _ io.Reader = (*os.File)(nil)atama derleyici kontrol yapar *os.Filebir olduğu io.Reader(veya başka atama geçerli olmaz). Eğer Oyun gidip değiştirirseniz *os.Fileiçin *os.Processsize 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.Fileuygular 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)
bufiobüyük dosyalar için önerdiğinizi açıklar mısınız?
path/file.ext. Başka hiçbir cevap ne os.Fileolduğunu açıklamadı.