VB.NET Controllare la prima riga di un file e modificarla


Questo post ha l'obbiettivo di creare una funzione per il controllo dell'intestazione di un file.
Nel caso preso in esempio, ipotizzo di avere un file di testo contenente un tag xml.
Mi aspetto quindi di trovare all'inizio del file il tag di apertura xml: "<?xml"
Se il tag non viene trovato, la riga di intestazione viene eliminata.

ecco il codice:


Imports System.IO

Module Module1

    Sub Main()

        Dim filePath, Str_To_Search As String

        ' numero di riga da eliminare
        Dim lineRemove As Integer

        ' la riga 0 è la prima riga
        lineRemove = 0

        ' file da analizzare
        filePath = "test.txt"

        ' stringa da ricercare
        Str_To_Search = "<?xml"


        Console.WriteLine(Controlla_Intestazione_File(filePath, Str_To_Search, lineRemove))

        Console.WriteLine("fine..")
        Console.ReadKey()

    End Sub


    Public Function Controlla_Intestazione_File(ByVal filePath, ByVal Str_To_Search, ByVal lineRemove)

        Try

            Dim first_line As String

            ' Apro il file di input e leggo tutto il file
            Dim readText() As String = File.ReadAllLines(filePath)

            ' memorizzo la prima riga
            first_line = readText(0)

            Console.WriteLine("Controllo la prima riga del file di input: " & first_line)

            ' controllo che la prima riga contenga l'intestazione XML
            Dim Check_XML As Boolean = first_line.Contains(Str_To_Search)

            ' Se Check_XML è TRUE allora l'intestazione XML è corretta
            If Check_XML Then

                Console.WriteLine("OK l'intestazione del file è corretta")
                Return True
            Else
                ' Se Check_XML è FALSE allora devo eliminare la prima riga del file

                ' inserisco il file in una lista
                Dim lines As New List(Of String)(File.ReadAllLines(filePath))

                ' controllo quale linea eliminare
                If (lineRemove >= 0 And lineRemove < lines.Count) Then

                    Console.WriteLine("La riga " & lineRemove & " non contiene le intestazioni corrette.")
                    Console.WriteLine("Elimino la stringa: " & lines(lineRemove))
                    ' elimino la linea desiderata
                    lines.RemoveAt(lineRemove)

                    ' scrivo e salvo il file.
                    File.WriteAllLines(filePath, lines.ToArray())

                    Return True
                Else
                    Console.WriteLine("Errore nel parametro lineRemove.")
                    Console.WriteLine("Valore Parametro lineRemove: " & lineRemove)
                    Return False
                End If

            End If

        Catch ex As Exception
            Console.WriteLine("Errore nel controllo intestazione del file: " & filePath)
            Console.WriteLine("Impossibile aprire o modificare il file.")
            Console.WriteLine("Error: " & ex.Message)
            Return False

        End Try

    End Function

End Module

Commenti