Visual Basic Text in Textdatei speichern!

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So ich hab's jetzt:


Schreiben

Um in die Datei etwas hineinzuschreiben (Der Text wird UTF-8-codiert, eine andere Mothode weiß ich jetzt nicht für andere Codierungen), muss man zuerst "System" und "System.IO" importieren. Dann kann man ein neues "StreamWriter"-Object erstellen, bei dessen Erstellung man als Argument den Pfad zur Textdatei (absoluter oder relativer pfad gehen beide) angibt. Danach kann man mit den Methoden "Write" oder "WriteLine" des eben erstellten "StreamWriter"-Objektes das, was man beim Aufruf als Argument angibt (es gehen verschiedenste Typen, von Integern über Strings bis zu Objekten), in die Datei schreiben lassen, wobei "Write" nur das Angegebene in die Datei schreibt und "WriteLine" zusätzlich immer die Zeile abschließt und alles, was danach geschrieben wird (vorausgesetzt die Stelle, an der geschrieben wird wurde nicht zwischen den Aufrufen verändert), kommt in eine neue Zeile. Zum Schluss sollte man nur noch den Stream schließen, um die Datei für andere Funktionen oder Programme wieder freizugeben.

Beispielcode:

Imports System       ' "System"    importieren
Imports System.IO    ' "System.IO" importieren

'......... (Programmcode bis zum Schreiben in die Datei) .........

Dim sw As StreamWriter = New StreamWriter(PFADzurDATEI) ' neues "StreamWriter-Objekt erstellen mit dem Dateipfad als Argument
sw.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ")              ' als Argument Angegebenes schreiben und neue Zeile danach anfangen
sw.Write("abcdefghijklmnopqrstuvwxyz0123456789")        ' als Argument Angegebenes schreiben, ohne eine neue Zeile anzufangen
sw.Close()                                              ' Stream schließen, damit die Datei nicht mehr für andere Programme und Funktionen gesperrt ist und von diesen verwendet werden kann

'............... (restlicher Code des Programms) ..................

Lesen

Der Lesevorgang gestaltet sich ähnlich: Man importiert wie oben auch "System" und "System.IO" und erstellt dann ein neuer "StreamReader"-Objekt und gibt beim Erstellen als Argument den Dateipfad zur Datei (wieder relativ oder absolut) an. Dann kann man mit "ReadLine" eine einzelne Zeile lesen. Da der gelesene Text der Rückgabewert der Funktion ist, liegt es nahe, diesen einer Variabeln zuzuweisen oder die Funktion als Argument beim Aufruf einer anderen Funktion zu schreiben, sodass der Rückgabewerrt dieser der anderen Funktion übergeben wird. Wenn der Rückgabewert nichts ist, dann ist das Dokument zu ende gelesen. Zum Schluss nur noch den Stream schließen, damit die Datei von anderen Pogrammen und Funktionen wieder benutzt werden kann und nicht mehr für diese gesperrt ist.

Beispielcode:

Imports System    ' "System" importieren
Imports System.IO ' "System.IO" importieren

'........ (Programmcode bis zum Lesen der Datei) ........

Dim sr As StreamReader = New StreamReader(pfadZURdatei) ' Ein neues "StreamReader"-Objekt erstellen mit dem absoluten oder relativen Pfad zur zu lesenden Datei
Dim text As String                                      ' leeren String erstellen, in dem gleich der Inhalt der Datei gespeichert werden wird
text = sw.ReadLine                                      ' Zeile der Datei wird einer Variabeln zugewiesen.
sw.Close()                                              ' Stream wird geschlossen, damit die Datei wieder freigegeben ist für andere Funktionen und Programme.

Es ist nützlich, in einer Bedingten Funktion (z. B. der berühmten "While"-Schleife), welche aufhört, wenn die Datei zu Ende ist, die Rückgabewerte der Funktion "ReadLine"

  • entweder direkt auszugeben, oder,
  • wenn sie als String gespeichert werden, einen String immer um den neuen Wert zu erweitern,
  • oder in einem Array oder einer anderen Art von Liste zu speichern.

Die Quellen kommen in separaten Antworten an diese, denn sie sind gut, um nochmal nachzusehen, aber werden, wenn ich mehr als einen Link einfüge als Spam interpretiert.

hajimurat  07.08.2013, 02:44

zweite Quelle: msdn.microsoft.com/de-de/library/db5x7c0d(v=vs.80).aspx

0

Bin schon etwas eingerostet und habe mich in letzter Zeit mehr auf Python und C++ umgestellt, aber informiere Dich mal über "StreamReader" mit einer Internetsure. Ich weiß auch noch, dass die Befehle "ReadLine(...)" und "WriteLine(...)" eine Rolle spielen. mit denen machst du da fast alles. Wenn ich mich genauer informiert habe, schreibe ich noch etwas hier.