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