Procedura: leggere da file binari in Visual Basic
L'oggetto My.Computer.FileSystem
offre il metodo ReadAllBytes
per leggere da file binari.
Per leggere da un file binario
Usare il metodo
ReadAllBytes
che restituisce il contenuto di un file sotto forma di matrice di byte. Nell'esempio riportato di seguito viene letto il fileC:/Documents and Settings/selfportrait.jpg
.Dim bytes = My.Computer.FileSystem.ReadAllBytes( "C:/Documents and Settings/selfportrait.jpg") PictureBox1.Image = Image.FromStream(New IO.MemoryStream(bytes))
Per file binari di grandi dimensioni, è possibile usare il metodo Read dell'oggetto FileStream per leggere solo una parte specificata del file per volta. È quindi possibile limitare la parte del file caricata nella memoria per ogni operazione di lettura. Nell'esempio di codice seguente viene copiato un file e viene consentito al chiamante di specificare la parte di file letta nella memoria per l'operazione di lettura.
' This method does not trap for exceptions. If an exception is ' encountered opening the file to be copied or writing to the ' destination location, then the exception will be thrown to ' the requestor. Public Sub CopyBinaryFile(ByVal path As String, ByVal copyPath As String, ByVal bufferSize As Integer, ByVal overwrite As Boolean) Dim inputFile = IO.File.Open(path, IO.FileMode.Open) If overwrite AndAlso My.Computer.FileSystem.FileExists(copyPath) Then My.Computer.FileSystem.DeleteFile(copyPath) End If ' Adjust array length for VB array declaration. Dim bytes = New Byte(bufferSize - 1) {} While inputFile.Read(bytes, 0, bufferSize) > 0 My.Computer.FileSystem.WriteAllBytes(copyPath, bytes, True) End While inputFile.Close() End Sub
Programmazione efficiente
Le condizioni seguenti possono generare un'eccezione:
Il percorso non è valido per uno dei seguenti motivi: è una stringa di lunghezza zero, contiene solo spazi vuoti, contiene caratteri non validi o è il percorso di una periferica (ArgumentException).
Il percorso non è valido in quanto è
Nothing
(ArgumentNullException).Il file non esiste (FileNotFoundException).
Il file è in uso in un altro processo oppure si verifica un errore di I/O (IOException).
La lunghezza del percorso supera la lunghezza massima definita dal sistema (PathTooLongException).
Il nome di un file o di una directory nel percorso contiene i due punti (:) o ha un formato non valido (NotSupportedException).
La memoria disponibile non è sufficiente per la scrittura della stringa nel buffer (OutOfMemoryException).
L'utente non dispone delle autorizzazioni necessarie per visualizzare il percorso (SecurityException).
Non basarsi sul nome del file per prendere decisioni in merito al relativo contenuto. È possibile ad esempio che il file Form1.vb non sia un file di origine di Visual Basic.
Prima di usare i dati nell'applicazione verificare tutti gli input. È possibile che il contenuto del file non corrisponda a quanto previsto e che quindi i metodi per la lettura dal file non abbiano esito positivo.