Creazione di un array di byte utilizzando il tipo di dati lungo?
-
03-07-2019 - |
Domanda
Il più delle volte quando leggiamo il flusso di file in un array di byte, scriviamo il seguente codice: -
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
Ma qui dobbiamo convertire la lunghezza in un tipo intero (riga 2 del codice sopra) poiché non possiamo dichiarare un array di byte usando il tipo di dati lungo (con l'opzione rigorosa su). È una buona pratica? Qual è il problema per questo problema?
Soluzione
La buona pratica è utilizzare File.ReadAllBytes
anziché l'intera cosa:
Dim input = File.ReadAllBytes(filePath)
A proposito, se il tuo file sarà così grande (più di 4 GB), non vorrai caricarlo tutto in una matrice di byte come ci vorrà fino a 4 GB di RAM (e in un processo gestito a 32 bit, non puoi averlo affatto, anche se hai più RAM).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow