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?

È stato utile?

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
scroll top