J'ai beaucoup de petits fichiers, je ne veux pas les lire ligne par ligne.
Existe-t-il une fonction dans Go qui lira un fichier entier dans une variable chaîne?
Utilisez ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile lit le fichier nommé par nom de fichier et renvoie le contenu. Un appel réussi renvoie err == nil, pas err == EOF. Étant donné que ReadFile lit le fichier entier, il ne traite pas un EOF de Read comme une erreur à signaler.
Vous obtiendrez un []byte
au lieu d'un string
. Il peut être converti si vraiment nécessaire:
s := string(buf)
Si vous voulez simplement que le contenu soit sous forme
string
, la solution simple consiste à utiliser laReadFile
fonction duio/ioutil
package. Cette fonction renvoie une tranche debytes
dont vous pouvez facilement la convertir enstring
.la source
Je pense que la meilleure chose à faire, si vous êtes vraiment préoccupé par l'efficacité de la concaténation de tous ces fichiers, est de les copier tous dans le même tampon d'octets.
Cela ouvre chaque fichier, copie son contenu dans buf, puis ferme le fichier. Selon votre situation, vous n'aurez peut-être pas besoin de le convertir, la dernière ligne est juste pour montrer que buf.Bytes () a les données que vous recherchez.
la source
Voici comment je l'ai fait:
la source
Je ne suis pas avec l'ordinateur, alors j'écris un brouillon. Vous pourriez être clair de ce que je dis.
la source