golang: créer un io.Lecteur à partir d'un fichier local

Je voudrais ouvrir un fichier local et retourner une e / s.Lecteur. La raison en est que j'ai besoin de nourrir un io.Lecteur à une bibliothèque que j'utilise, comme:

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

}
46
go
demandé sur 9000 2014-09-05 05:05:30

3 réponses

os.Open retourne un 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")
}
65
répondu fabrizioM 2014-09-05 01:10:59

Utilisez os.Ouvrir():

Func ouvert (chaîne de nom) (fichier *fichier, erreur err)

Ouvrir ouvre le nom fichier pour la lecture. En cas de succès, les méthodes sur le fichier retourné peuvent être utilisé pour la lecture; le descripteur de fichier associé a le mode O_RDONLY. Si il y a une erreur, elle sera de type * PathError.

La valeur renvoyée du type *os.File implémente l'interface io.Reader.

29
répondu ANisus 2014-09-05 01:10:32

Le type *système d'exploitation.Fichier implémente l'oi.Interface de lecteur, de sorte que vous pouvez retourner le fichier en tant que lecteur. Mais je vous recommande d'utiliser le paquet bufio Si vous avez l'intention de lire de gros fichiers, quelque chose comme ceci:

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

return bufio.NewReader(file)
13
répondu Yandry Pozo 2016-10-06 23:46:07