File Input String – Codice VB.NET


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.





Articolo pubblicato da:

Condividi articolo:

File Input String

ovvero come prendere da un qualsiasi file una porzione di N byte da una sua qualsiasi posizione.

Introduzione

A molti programmatori, specie se alle prime armi, sarà capitato di voler leggere da un file solo N byte, posizionati in un punto X, specifico di esso: le classiche lineinput o input non servono a molto. Ad esempio si potrebbe vole leggere solo i primi 1024 byte (l’intestazione del file) dove di solito sono contenute le informazioni dello stesso, oppure si è creato un file organizzato in X serie da N byte (i cosiddetti record): le applicazioni sono pressoché infinite. Si tratta quindi di un codice vbnet per il file input string.

google_ad_width = 336;
            google_ad_height = 280;
            google_color_border="DDDDDD";
            google_color_bg="FFFFFF";
            google_color_link="232323";
            google_color_url="DD362F";
            google_color_text="373737";
            google_ad_client = "ca-pub-1720332600334127";
            google_ad_slot = "4667841093";
            google_ad_host="pub-9280273811890686";
 
 
 
 
Imports System.IO
 
Public Function ingAC_INPUT_DA_FILE(Percorso_File As String,
                                        Posizione As Long,
                                        Buffer As Integer,
                                        Modalita_Errore As Boolean) As String
        ingAC_INPUT_DA_FILE = Nothing ' Nothing di default 
        If Not File.Exists(Percorso_File) Then
            If Modalita_Errore Then MsgBox("Errore 1: File inesistente.")
            Return Nothing ' file non esistente ritorna Nothing e ferma l'esecuzione
        Else
            Dim FLen As Long = FileLen(Percorso_File)
            If Buffer < 0 Or Buffer > FLen Then
                If Modalita_Errore Then MsgBox("Errore 2: Dimensioni del Buffer non corrette: min= 0, Max=dim File=" & FLen)
                Return Nothing ' errore dimensioni buffer ritorna Nothing e ferma l'esecuzione
            End If
            If Posizione < 0 Or Posizione * Buffer > FLen Then
                If Modalita_Errore Then MsgBox("Errore 3: La posizione va oltre i limiti consentiti: Attuale:" & Posizione * Buffer & "min= 0, max=dim File=" & FLen)
                Return Nothing ' errore posizionamento ritorna Nothing e ferma l'esecuzione
            End If
            Dim b(Buffer - 1) As Byte
            Try
                Using fs As FileStream = New FileStream(Percorso_File, FileMode.Open, FileAccess.Read)
                    Dim CountByte As Integer = Buffer
                    Dim OffsetByte As Integer = 0
                    While (CountByte > 0)
                        'Controlla se restituisce zero, nel qual caso smette di leggere
                        fs.Seek(Buffer * Posizione, 0)
                        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 Nothing ' errore durante il caricamento del file, ritorna Nothing e ferma l'esecuzione
            End Try
            If Posizione * Buffer + Buffer > FLen Then
                ReDim Preserve b(Buffer - (Posizione * Buffer + Buffer - FLen) - 1)
            End If
            Dim Conversion As String = System.Text.Encoding.UTF-8.GetString(b)
            Return Conversion
        End If
    End Function
 

Come funziona

La funzione ingAC_INPUT_DA_FILE(Percorso_File As String, Posizione As Long, Buffer As Integer, Modalita_Errore As Boolean) si occupa del file input string: basta inserire il Percorso_File che contiene percorso e nome del file insieme; poi immaginando di aver suddiviso idealmente il file in blocchi da N byte indichiamo tramite Posizione quale blocchettino si vuole leggere. Quindi Buffer indica la quantità di byte in cui è suddiviso il file e Posizione è la posizione del pacchetto di N byte. Con modalita_errore in True la funzione, se è il caso, avvisa con un msgbox del tipo di errore.
Il funzionamento è semplice, si effettuano i vari controlli preliminari e con seek ci si posiziona nel punto del file da cui si vuole iniziale la lettura; si procede col riempire il buffer. In output l’autore ha deciso di fare restituire una stringa contenente gli N byte letti dalla posizione X. Una nota: per la conversione da array di byte in string finale, si è usato System.Text.Encoding.UTF-8 che permette, secondo le esigenze di “encodare” anche in Unicode, Ascii, etc. Per cui il nostro file input string si può considerare bello e pronto. Nota: ricordarsi di Imports System.IO in testa al listato, per poter usare la funzione ingAC_INPUT_DA_FILE().

Link utili:

File Input String - Codice VB.NET



Random Post

Camminare, passeggiare – Interpretazione dei sogni

Sognare di camminare o di non riuscire a camminare o correre

Sognare di camminare o di non riuscire a camminare, fare una passeggiata: significati, interpretazioni e numeri associati al sogno. Nei sogni il camminare è simbolo di evoluzione e del nostro andare ...

Vai al post...

Studio di Funzione SF005 – Analisi Matematica

Studio di Funzione SF005 - Grafico finale

Studio di Funzione SF005 – Analisi Matematica. Una serie di studi di funzione di Analisi Matematica svolti per gli studenti dell’ultimo anno di Scuola Superiore o per il primo anno di Uni...

Vai al post...

Porsche – Lavora con noi

Lavora con noi : Porsche

Lavora con noi – Porsche La storia della Porsche inizia ufficialmente nell’aprile del 1931 con la fondazione dello studio di progettazione ed ingegneria Dr. Ing. h.c. F. Porsche GmbH a Stoccar...

Vai al post...

PUBBLICITÀ



Una funzione per unire due file (merge file) ed eventualmente manipolarli, tramite codice VB.NET Unire
Una funzione per generare numeri primi, tutti i numeri primi, entro un dato intervallo tramite
Sostituire o eliminare in una stringa una substring con un'altra (o con una stringa vuota)
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