2009-05-04 2 views
0

La plupart du temps quand on lit le flux de fichier dans un tableau d'octets, on écrirait le code suivant: -Création d'un tableau d'octets à l'aide du type de données long?

Dim inputStream As New System.IO.FileStream(filePath, IO.FileMode.Open) 
Dim fileLength As Integer= CType(inputStream.Length, Integer) 
Dim input(fileLength) As Byte 

Using inputStream 
    inputStream.Read(input, 0, fileLength) 
End Using 

Mais ici, nous devons convertir longueur en un type entier (ligne 2 du code ci-dessus) puisque nous ne pouvons pas déclarer un tableau d'octets en utilisant le type de données long (avec l'option strict sur). Est-ce une bonne pratique? Quel est le travail autour de ce problème?

Répondre

2

La bonne pratique consiste à utiliser File.ReadAllBytes au lieu de la chose:

Dim input = File.ReadAllBytes(filePath) 

Soit dit en passant, ce grand (plus de 4 Go) si votre fichier va être , vous ne Je veux le charger en une seule fois dans un tableau d'octets, car il faudra 4 Go de RAM (et dans un processus géré de 32 bits, vous ne pouvez pas l'avoir du tout, même si vous avez plus de RAM).

+0

Je pense que vous voulez dire File.Read Not ReadAllBytes;) –

+1

@Deviant: Non, il n'y a pas de méthode 'File.Read'. En fait, tout l'extrait de code dans l'OP peut être remplacé par 'bytes = File.ReadAllBytes (path)'. Le deuxième paragraphe de la réponse est commencé avec "par le chemin" et est une entité distincte;) –

+0

Je supposais que depuis qu'il avait brisé dans le territoire de l'utilisation de longs pour Stream.Read() // qui est ce que je voulais dire avec File.Read ... Je pensais qu'il avait des problèmes avec les fichiers volumineux ... donc votre réponse m'a paru à l'envers:/ –

Questions connexes