Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

10.2. Tekst Schrijven naar een Bestand

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

10.2.1. System.IO.StreamWriter

Naast een StreamReader voor het inlezen van een bestand bestaat er in de System.IO namespace ook een StreamWriter klasse die je kan gebruiken voor het schrijven van tekst naar een bestand.

Deze klasse beschikt over Write en WriteLine methods die naar analogie met Console.Write en Console.WriteLine respectievelijk geen en wel een endline karakter zullen plaatsen na de geschreven tekst.
Visual Basic 2012 Broncode - Codevoorbeeld 299
Module StreamWriterWriteAndWriteLineExample
    Sub Main()
        Dim path As String = "TextFile2.txt"
        Dim streamWriter As New System.IO.StreamWriter(path)
        '
        streamWriter.Write("a")
        streamWriter.Write("b")
        streamWriter.WriteLine("c")
        streamWriter.WriteLine("de")
        streamWriter.WriteLine("f")
        '
        streamWriter.Close()
    End Sub
End Module
Bemerk hoe opnieuw de Close method werd aangeroepen meteen nadat de nodige schrijfoperaties zijn verwezelijkt.  Dit om de stream te finaliseren en de gebruikte resources vrij te geven.

Ook aan de constructor van de StreamWriter klasse kan men op relatieve of absolute wijze het bestandspad van het te-creëren of te-overschrijven bestand opgeven.

Dit voorbeeld zal een bestand (TextFile2.txt) creëren met volgende inhoud :
Tekst Bestand
abc
de
f
Voert men het voorbeeld nogmaals uit dan wordt de oude bestandsinhoud volledig overschreven met de nieuwe inhoud, die dan weliswaar identiek is als het om hetzelfde voorbeeld gaat.

Wens je echter het bestand niet te overschrijven, maar eerder inhoud toe te voegen (te "appenden") aan dit bestand, dan kan je aan de append parameter van de constructor True doorgegeven.
Visual Basic 2012 Broncode - Codevoorbeeld 300
Module StreamWriterAppendExample
    Sub Main()
        Dim append As Boolean = True
        Dim streamWriter As New System.IO.StreamWriter("TextFile2.txt", append)
        '
        streamWriter.Write("ghi")
        '
        streamWriter.Close()
    End Sub
End Module
Hetzelfde bestand (TextFile2.txt) zal hier zijn uitgebreid met de tekst "ghi" :
Tekst Bestand
abc
de
f
ghi

10.2.2. My.Computer.FileSystem.WriteAllText

Vergelijkbaar met de ReadAllText method van My.Computer.FileSystem, die ons verloste van het manuele gebruik van StreamReader objecten, zal de WriteAllText method van dit My object zelf de nodige streamobjecten aanmaken en finaliseren.
Visual Basic 2012 Broncode - Codevoorbeeld 301
Module MyComputerFileSystemWriteAllTextExample
    Sub Main()
        Dim path As String = "TextFile3.txt"
        Dim text As String = "abc"
        Dim append As Boolean = False
        '
        My.Computer.FileSystem.WriteAllText(path, text, append)
        '
        Console.WriteLine(My.Computer.FileSystem.ReadAllText(path))
        '
        My.Computer.FileSystem.WriteAllText(path, "def", True)
        '
        Console.WriteLine(My.Computer.FileSystem.ReadAllText(path))
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
abc
def
Het spreekt voor zich dat we in vorig voorbeeld beter in één keer de bestandsinhoud schrijven, met dus één call naar de method WriteAllText.
Dit in tegenstelling tot de huidige twee calls naar deze method, die ook twee keer een streamobject zal aanmaken en finaliseren.
Deze twee aparte call werder hier louter gemaakt om te illustreren hoe parameter append waaraan True wordt doorgegeven ervoor zorgt dat de bestandsinhoud niet wordt overschreven maar wordt aangevuld.

Opnieuw is het niet onbelangrijk om te vermelden dat we over dit My object My.Computer.FileSystem beschikken in Visual Basic, maar niet persé in andere .NET talen.

Hoewel hier nu in de vorige voorbeelden gebruik is gemaakt van bestanden met de extensie txt is dit helemaal niet noodzakelijk.  Men kan de gedemonstreerde streamobjecten ook gebruiken voor het schrijven en lezen van tekst naar eender wat voor bestand, met eender welke extensie.

10.2.3. Text Encoding

By default werken de geïllustreerde klassen en objecten met UTF-8 encoding.  Men kan deze encoding echter aanpassen.
De constructoren van de klassen StreamReader en StreamWriter en de methods ReadAllText en WriteAllText beschikken over overladen versies waaraan men kan opgeven (in System.Text.Encoding vorm) welke encoding wordt gebruikt.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.