Aprire File – Codice VB.NET


Aprire file: come fare a gestire e a leggere un certo numero di byte, da qualsiasi tipo di file. Introduzione Il listato seguente permette di aprire file di qualsiasi ...




Categoria dell'articolo: Codice VB.NET

Listati in codice Visual Basic.NET, elaborati o rielaborati e adattati da IngAC con la versione 2015. Funzioni e subroutine varie utili alla creazione di programmi.





Autore articolo:



Aprire file: come fare a gestire e a leggere un certo numero di byte, da qualsiasi tipo di file.

Introduzione

Il listato seguente permette di aprire file di qualsiasi formato: testo, immagine, audio, pdf ecc. Per il programmatore potrebbe essere molto utile avere il codice già pronto e tale da gestire l’ apertura del file su cui effettuare le più svariate operazioni. Si potrebbe dover criptare/decriptare un file di testo; si potrebbe voler analizzare solo N byte che rappresentano ad esempio la temperatura dell’aria e cosi via…  In questo modo aprire file e gestirli diventa molto semplice.

Imports System.IO
 
        Public Function ingAC_APRI_FILE(Percorso_File As String, Buffer As Integer, Modalita_Errore As Boolean) As Byte
        ingAC_APRI_FILE = 0 'di default tutto ok
        Dim LMax As Long = 2 ^ 24 ' 16MB : dimensione max matrice (piu grande = piu tempo)
        If Not File.Exists(Percorso_File) Then
            If Modalita_Errore Then MsgBox("Errore 1: File inesistente.")
            Return 1 ' file non esistente ritorna 1 e ferma l'esecuzione
        Else
            Dim FLen As Long = FileLen(Percorso_File)
            If Buffer < 0 Then
                If Modalita_Errore Then MsgBox("Errore 2: Il Buffer non può essere negativo.")
                Return 2 ' errore dimensioni buffer ritorna 2 e ferma l'esecuzione
            Else
                If Buffer = 0 And FLen < LMax Then Buffer = FLen ' buffer coincide con tutto il file
                If FLen > LMax Then
                    Buffer = LMax
                    ingAC_APRI_FILE = 3
                    If Modalita_Errore Then MsgBox("Errore 3: La lunghezza del file è maggiore del massimo consentito.") 'legge fino al max impostato, ritorna 3  e continua
                End If
            End If
            Try
                Using fs As FileStream = New FileStream(Percorso_File, FileMode.Open, FileAccess.Read)
                    Dim b(Buffer - 1) As Byte
                    Dim CountByte As Integer = Buffer
                    Dim OffsetByte As Integer = 0
                    While (CountByte > 0)
                        'Controlla se restituisce zero, nel qual caso smette di leggere
                        Dim n As Integer = fs.Read(b, OffsetByte, CountByte)
                        'Se n è zero termina il ciclo
                        If (n = 0) Then
                            Exit While
                        End If
                        OffsetByte = (OffsetByte + n)
                        CountByte = (CountByte - n)
                        Application.DoEvents()
                        'inserire qui dentro le operazioni da 
                        'effettuare durante il caricamento in b
                        'ad esempio un indicatore di avanzamento
                    End While
                    CountByte = b.Length
                End Using
            Catch ex As Exception
                If Modalita_Errore Then MsgBox("Errore 4: " & ex.Message)
                Return 4 ' errore durante il caricamento del file, ritorna 4 e ferma l'esecuzione
            End Try
        End If
    End Function

Come funziona

Il funzionamento è semplice. La funzione che si occupa di tutto è ingAC_APRI_FILE(Percorso_File As String, Buffer As Integer, Modalita_Errore As Boolean) che ha come ingresso il Percorso_File e la dimensione del Buffer (ossia quanti byte alla volta si vogliono leggere/analizzare). Con modalita_errore in True la funzione in caso di errore avvisa con un msgbox dell’errore.



Come output restituisce un valore numerico positivo, corrispondente a un eventuale errore; oppure zero se è tutto ok. Ovviamente si potrebbe voler far restituire alla funzione una stringa esplicativa oppure direttamente il risultato delle operazioni condotte sui file.

Di default la funzione restituirà il valore “zero” a meno che, effettuato il primo controllo “if”, il file non sia presente: in questo caso verrà restituito il valore “1”. Se è tutto ok il codice prosegue controllando che il buffer dato in input non sia minore o uguale a zero oppure che non sia troppo grande. Il valore di 16MB sembra adeguato come massimo, ma potrebbe anche essere aumentato o diminuito.

Nel caso in cui sia possibile, ponendo in input “Buffer”=0, lo si farà coincidere con la dimensione del file, oppure con il valore massimo impostato a 16MB. In quest’ultimo caso la funzione restituirà, salvo altri errori, il valore “3”. A questo punto, all’interno di un Try-Catch-End Try, al fine di prevenire tutti gli errori possibili, si procede con l’apertura del file in questione (i vari parametri da inserire/modificare li trovate su MSDN) e con un Do While – Loop si procede alla lettura di “Buffer” byte.

Terminato il loop senza errori, si avrà l’array “b” riempito con i byte del file impostati con “buffer”; viceversa la funzione restituirà “4”. Questo array “b” potrà quindi essere copiato in un altro array, magari pubblico, sul quale operare agevolmente da ogni parte del listato del vostro progetto. Una modifica interessante potrebbe essere quella di gestire e caricare una serie di N byte per volta, avanzando fino alla fine del file.



Infine, ricordate di inserire Imports System.IO per poter usare la funzione ingAC_APRI_FILE ().

Link utili:

Aprire File - Codice VB.NET

Aprire File – Codice VB.NET






Random Post

Cozze al cartoccio – Ricette semplici

Cozze al cartoccio – Ricette semplici. Ingredienti delle cozze al cartoccio: 3 kg di cozze; 120g di finocchio selvatico; burro; 4 cucchiai di panna; 4 spicchi d’aglio; 1 mazzetto di prezz...

Vai al post...

Malato, paziente – Interpretazione dei sogni

Una persona malata, un malato, un infermo, un paziente nei sogni: significati, interpretazioni, simbologia e numeri della smorfia associati. Una persona malata può suscitare un duplice effetto nella ...

Vai al post...

Lavora con noi – La Rinascente

Lavora con noi – La Rinascente La Rinascente. Passato, presente e futuro del department store più elegante d’Italia.   Nella sua storia lunga un secolo la Rinascente ha vissuto momenti di grande...

Vai al post...

Incinta, essere – Interpretazione dei sogni

Sognare di essere incinta, sognare una donna incinta, una gravidanza, di essere in stato interessante : significati, simbologia, interpretazioni e numeri della smorfia associati al sogno. Nella vita r...

Vai al post...
Disclaimer:


Questo blog NON è un prodotto editoriale ai sensi della legge n° 62 del 7 marzo 2001. Le immagini tratte da internet che possano violare i diritti di autore, previa comunicazione, attraverso la sezione -contatti-, verranno prontamente rimosse o sostituite.

Copyright:


I contenuti presenti su ROMOLETTO BLOG dei quali è autore il proprietario del blog non possono essere copiati, riprodotti, redistribuiti perché appartenenti all autore stesso. Si vieta la copia e la riproduzione dei contenuti in qualsiasi modo o forma. Si vieta altresì la pubblicazione e la redistribuzione dei contenuti non autorizzata espressamente dell autore.


Copyright © 2011 / 2017 - ROMOLETTO BLOG - All Right Reserved

IngAC

Informazioni su Romoletto

Ingegnere Civile, Blogger, Programmatore VB.NET, Lezioni private per scuole medie inferiori e superiori. Per contattarmi scorri la home fino in fondo e vai al form -Contatti-

Navigazione per Articoli della stessa Categoria