Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:dateioperationen_in_c-sharp

Dateioperationen in C#

Schreiben in eine Datei

Um in eine Datei zu schreiben, kann der folgende Quelltext verwendet werden.

using System.IO;
//...
 
StreamWriter sw;
sw = new StreamWriter("test.txt");
 
sw.WriteLine("Eine Zeile");
sw.Close();

Mit der using-Anweisung werden Klassen für die Ein- und Ausgabe (IO = Input/Output) zur Verfügung gestellt. Die Datei test.txt landet hierbei direkt neben der EXE-Datei des Programms. Man kann einen vollständigen Pfad angeben. Hierbei muss vor den Anführungszeichen ein @-Symbol angegeben werden: @"C:\Users\Bakera\Desktop\test.txt".

Weitere Details stehen z.B. in Kapitel 12.5 von Visual C# 2012.

Speicherndialog

Komfortabler ist die Verwendung eines Speicherndialoges, in dem der Nutzer den Speicherort und Dateiname selbst festlegen kann.

Wir gehen von einem Fenster mit einem Button und folgenden Quelltext aus.

private void button1_Click(object sender, EventArgs e)
{
  SaveFileDialog sfd = new SaveFileDialog();
  DialogResult result = sfd.ShowDialog();
  if(result == DialogResult.OK)
  {
    string sDatei = sfd.FileName;
    MessageBox.Show("Es wurde Datei " + sDatei + " gewählt");
  }
}

Nach einem Klick auf den Button erscheint das folgende Fenster und der Nutzer kann eine Datei auswählen.

Wenn der Dialog nicht abgebrochen wird, erscheint im Anschluss eine MessageBox, die den Dateiname anzeigt.

Der SaveFileDialog kann umfangreich konfiguriert werden. So kann z.B. die Auswahl der Dateien auf Textdateien beschränkt werden.

sfd.Filter ="Textdateien (*.txt)|*.txt"

Lesen einer Datei

Das Lesen einer Datei erfolgt fast wie das Schreiben in eine Datei. Statt dem StreamWriter benutzen wir nun einen StreamReader. Da wir nicht wissen, wann das Ende der Datei erreicht ist, müssen wir dies mit EndOfStream in einer Schleife prüfen.

// StreamReader zum Lesen erstellen
StreamReader datei = new StreamReader(@“C:\datei.csv);
 
// Solange noch Zeilen gelesen werden können...
while( !datei.EndOfStream )
{
  // Zeile aus der Datei lesen
  string zeile = datei.ReadLine();
  // etwas mit der Textzeile machen
}
 
// Datei schließen
datei.Close();

Eine Datei kann auch byteweise eingelesen werden

FileStream stream = new FileStream(sDateiname, FileMode.Open);
int einByte = stream.ReadByte();            
while (einByte != -1)
{
    byte b  = (byte) einByte;
    // ... 
    einByte = stream.ReadByte();
}
stream.Close();           
schule/dateioperationen_in_c-sharp.txt · Zuletzt geändert: 2019-12-12 20:47 von marco.bakera