|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
10.2.1. System.IO.StreamWriterNaast 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 2010 Broncode 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 : 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 2010 Broncode 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Hetzelfde bestand ( TextFile2.txt ) zal hier zijn uitgebreid met de tekst "ghi" : Tekst Bestand abc
de
f
ghi boven
10.2.2. My.Computer.FileSystem.WriteAllTextVergelijkbaar 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 2010 Broncode 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 SubEnd ModuleDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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. boven
10.2.3. Text EncodingBy 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 zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|