Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung

...powered by haas.homelinux.net...

Einstieg in VB.NET von René Martin
- Für Programmiereinsteiger -
Einstieg in VB.NET
gp Kapitel 5 Dateizugriff
  gp 5.1 Prüfen, ob eine Datei vorhanden ist
  gp 5.2 Textdateien lesen und schreiben
  gp 5.3 Der OpenFileDialog
  gp 5.4 DriveListBox, DirListBox und FileListBox
  gp 5.5 Fehler
  gp 5.6 Bitte warten Sie ...
  gp 5.7 Zusammenfassung


Galileo Computing

5.2 Textdateien lesen und schreiben  toptop

Sollte die Datei noch nicht angelegt sein, dann wird sie erzeugt. Sie wird vom Objekt »StreamWriter« erzeugt. Es wird zu Beginn der Prozedur deklariert:

Dim objDateiMacher As System.IO.StreamWriter

Da diese Kaskade System.IO noch mehrmals verwendet wird, wird zu Beginn, das heißt vor dem Befehl

Public Class

der Befehl eingefügt, mit dem auf diese Klasse zugegriffen werden kann:

Imports System.IO

Nun kann die Prüfung auf File.Exists und die Deklaration verkürzt werden auf:

Dim objDateiMacher As StreamWriter

Und mit diesem Objekt kann eine Textdatei erzeugt werden:

objDateiMacher = New StreamWriter(strWinVerz & "\" & _
DATEINAME)
objDateiMacher.Close()
objDateiMacher = Nothing

Soll ein Text in der Datei stehen, dann könnte er mit dem Befehl

objDateiMacher.Write("C:\Eigene Dateien\Statistik.xls")

zwischen New und Close eingefügt werden.

Wenn die Datei »info.txt« existiert, dann kann ihr Inhalt ausgelesen werden. Dabei hilft das Objekt »StreamReader«. Es wird analog zu »StreamWriter« deklariert:

Dim objDateiLeser As StreamReader

Nun kann gelesen werden:

...
Else
   objDateiLeser = New StreamReader(strWinVerz & "\" & _
   DATEINAME)
   strExcelDateiname = objDateiLeser.ReadToEnd()
   objDateiLeser.Close()
   objDateiLeser = Nothing
End If

Beim Testen wird sich später ein kleines Problem ergeben. Angenommen, »info.txt« existiert noch nicht. Dann wird die Datei erzeugt und mit einem beliebigen Pfad gefüllt. Die Text-Variable »strExcelDateiName«, die mit dem Dateinamen gefüllt werden soll (und im Anschluss weiter verarbeitet wird) ist nun noch nicht belegt. Das wird später zu einem Fehler führen. Deshalb sollte sie bei der Deklaration oder im If-Zweig gefüllt werden:

If File.Exists(strWinVerz & "\" & DATEINAME) = False Then
   objDateiMacher = New StreamWriter(strWinVerz & "\" & _
   DATEINAME)
   objDateiMacher.Write("C:\Eigene Dateien\Statistik.xls")
   objDateiMacher.Close()
   objDateiMacher = Nothing
   strExcelDateiname = "C:\Eigene Dateien\Statistik.xls"
Else
...

Wird ein Objekt »sr« wie folgt deklariert, dann listet die folgende Tabelle die wichtigsten Befehle zum Auslesen von Textdateien auf:

Dim sr As System.Io.StremReader
sr = New StreamReader("C:\Text.txt")
Tabelle 5.3   Die wichtigsten Methoden des Objekts StreamWriter
Methode Bedeutung
Peek gibt das nächste verfügbare Zeichen zurück, ohne es zu verarbeiten
Read liest das nächste Zeichen
ReadLine liest eine Zeile aus
ReadBlock liest count Zeichen aus
ReadToEnd liest alle Zeichen bis zum Ende aus
Close schließt das StreamReader-Objekt

Nun wird überprüft, ob diese Datei vorhanden ist:

If File.Exists(strExcelDateiname) = False Then

Ist sie es nicht, so wird der Benutzer gefragt, ob er nach ihr suchen möchte:

Dim intAntwort As Integer
intAntwort = MessageBox.Show("Die Datei " & _
strExcelDateiName & _
existiert nicht. Soll nach ihr gesucht werden? ", _
"Dateisuche", MessageBoxButtons.YesNo)
If intAntwort = DialogResult.Yes Then
Abbildung

Abbildung 5.2   Die Datei ist nicht vorhanden

Wird ein Objekt »sw« wie folgt deklariert, dann listet die folgende Tabelle die wichtigsten Befehle zum Hineinschreiben und Auslesen von Textdateien auf:

Dim sw As System.Io.StreamWriter
sw = New StreamWriter("C:\Text.txt")
Tabelle 5.4   Die wichtigsten Methoden des Objekts StreamWriter
Methode Bedeutung
Flush löscht alle Puffer für den aktuellen StreamWriter
Write schreibt ein Zeichen in die Datei
WriteLine schreibt eine Zeile in die Datei
Close schließt die Datei

Interessant ist hierbei, dass der Befehl auch mit einem Parameter append vom Typ Boolean formuliert werden kann, der angibt, ob die Daten angehängt werden oder nicht:

sw = New StreamWriter("C:\Text.txt", False)

überschreibt vorhandene Daten,

sw = New StreamWriter("C:\Text.txt", True)

hängt die neuen Daten an die alten an.

  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML