Čtení a zápis souboru s libovolným kódováním

Určite jste někdy potřebovali načíst nebo zapsat textový soubor, ale nezobrazoval se vám ve správném kódování. Tento problém lze elegantně řešit pomocí StreamReader/StreamWriter a System.Text.Encoding.

Dalšími nejčastěji použivanými kódováními jsou:
System.Text.Encoding.ASCII, System.Text.Encoding.UTF8 a obecně použitelné System.Text.Encoding.GetEncoding(ByVal codepage As Integer). Parametr codepage je kódová stránka – v našem případě použité kódování je pro kódování windows-1250 použito codepage=1250.

    Imports System.Text

    \'Čtení
    Function ReadTextFromFile(ByVal FullFilePath As String, ByRef ReadText As String) As Boolean

        ReadTextFromFile = False
        Dim myStreamReader As StreamReader = Nothing

        Try

            myStreamReader = New StreamReader(File.OpenRead(FullFilePath), System.Text.Encoding.GetEncoding(1250))
            ReadText = myStreamReader.ReadToEnd()
            ReadTextFromFile = True

        Catch ex As Exception

            ReadTextFromFile = False

        Finally

            If Not myStreamReader Is Nothing Then

                myStreamReader.Close()

            End If

        End Try

    End Function

A podobnou funkci si můžeme napsat také pro zápis do souboru.

    Imports System.Text

    \'Zápis
    Function WriteTextToFile(ByVal FullFilePath As String, ByVal TextToWrite As String) As Boolean

        WriteTextToFile = False
        Dim myStreamWriter As StreamWriter = Nothing

        Try

            myStreamWriter = New StreamWriter(File.Create(FullFilePath), System.Text.Encoding.GetEncoding(1250))
            myStreamWriter.Write(TextToWrite, Encoding.GetEncoding(1250))
            myStreamWriter.Flush()
            WriteTextToFile = True

        Catch ex As Exception

            WriteTextToFile = False

        Finally

            If Not myStreamWriter Is Nothing Then

                myStreamWriter.Close()

            End If

        End Try

    End Function