94 votes

Façon fiable de convertir un fichier en octet[]

J'ai trouvé le code suivant sur le web :

private byte [] StreamFile(string filename)
{
   FileStream fs = new FileStream(filename, FileMode.Open,FileAccess.Read);

   // Create a byte array of file stream length
   byte[] ImageData = new byte[fs.Length];

   //Read block of bytes from stream into the byte array
   fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length));

   //Close the File Stream
   fs.Close();
   return ImageData; //return the byte data
}

Est-il assez fiable pour convertir un fichier en octet[] dans c#, ou y a-t-il une meilleure façon de le faire ?

239voto

BrightUmbra Points 13844
byte[] bytes = System.IO.File.ReadAllBytes(filename);

Ça devrait faire l'affaire. ReadAllBytes ouvre le fichier, lit son contenu dans un nouveau tableau d'octets, puis le ferme. Voici la page MSDN de cette méthode.

31voto

Brian Rasmussen Points 68853
byte[] bytes = File.ReadAllBytes(filename) 

ou ...

var bytes = File.ReadAllBytes(filename) 

12voto

Vivek Points 7254

Ne pas répéter ce que tout le monde a déjà dit, mais garder la feuille de triche suivante à portée de main pour les manipulations de fichiers :

  1. System.IO.File.ReadAllBytes(filename);
  2. File.Exists(filename)
  3. Path.Combine(folderName, resOfThePath);
  4. Path.GetFullPath(path); // converts a relative path to absolute one
  5. Path.GetExtension(path);

3voto

vehomzzz Points 7182

a l'air assez bon comme une version générique. Vous pouvez le modifier pour répondre à vos besoins, s'ils sont suffisamment spécifiques.

également tester les exceptions et les conditions d'erreur, telles que le fichier n'existe pas ou ne peut pas être lu, etc.

vous pouvez également faire ce qui suit pour économiser de l'espace :

 byte[] bytes = System.IO.File.ReadAllBytes(filename);

Prograide.com

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.

Powered by:

X