J'ai levé les yeux golang.org/pkg/os/#File mais je n'en ai toujours aucune idée. Il semble qu'il n'y ait aucun moyen d'obtenir la longueur du fichier, ai-je manqué quelque chose ?
Comment obtenir la longueur d'un fichier en Go ?
J'ai levé les yeux golang.org/pkg/os/#File mais je n'en ai toujours aucune idée. Il semble qu'il n'y ait aucun moyen d'obtenir la longueur du fichier, ai-je manqué quelque chose ?
Comment obtenir la longueur d'un fichier en Go ?
Appeler os.Stat comme dit par @shebaw (au moins dans les OS UNIX) est plus efficace, car stat() is a Unix system call that returns file attributes about an inode
et il n'est pas nécessaire de s'occuper de l'ouverture du fichier.
NOTE : L'utilisation d'une autre méthode peut entraîner too many open files
dans une application multithread/concurrence, du fait que vous ouvrez le fichier pour interroger les stats.
Ici, la référence
func GetFileSize1(filepath string) (int64, error) {
fi, err := os.Stat(filepath)
if err != nil {
return 0, err
}
// get the size
return fi.Size(), nil
}
func GetFileSize2(filepath string) (int64, error) {
f, err := os.Open(filepath)
if err != nil {
return 0, err
}
defer f.Close()
fi, err := f.Stat()
if err != nil {
return 0, err
}
return fi.Size(), nil
}
BenchmarkGetFileSize1-8 704618 1662 ns/op
BenchmarkGetFileSize2-8 199461 5668 ns/op
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.