C# – Textdatei – Lesen, Schreiben und zeilenweise Manipulation

In diesem Beispiel wird eine Textdatei mit der StreamWriter-Klasse beschrieben und anschließend unter Zuhilfenahme der StreamReader Klasse wieder ausgelesen.
Die Anwendung der Klassen ist relativ intuitiv , etwas komplizierter wird es wenn einzelnen Zeilen einer Textdatei gelesen oder geschrieben werden sollen. Für dieses Einsatzgebiet eigent sich nachfolgende Klasse.

.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.IO;
 
class TextDatei
{
 ///<summary>
 /// Liefert den Inhalt der Datei zurück.
 ///</summary>
 ///<param name="sFilename">Dateipfad</param>
 public string ReadFile(String sFilename)
 {
  string sContent = "";
 
  if (File.Exists(sFilename))
  {
   StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
   sContent = myFile.ReadToEnd();
   myFile.Close();
  }
  return sContent;
 }
 
 ///<summary>
 /// Schreibt den übergebenen Inhalt in eine Textdatei.
 ///</summary>
 ///<param name="sFilename">Pfad zur Datei</param>
 ///<param name="sLines">zu schreibender Text</param>
 public void WriteFile(String sFilename,String sLines)
 {
  StreamWriter myFile = new StreamWriter(sFilename);
  myFile.Write(sLines);
  myFile.Close();
 }
 
 ///<summary>
 /// Fügt den übergebenen Text an das Ende einer Textdatei an.
 ///</summary>
 ///<param name="sFilename">Pfad zur Datei</param>
 ///<param name="sLines">anzufügender Text</param>
 public void Append(string sFilename, string sLines)
 {
  StreamWriter myFile = new StreamWriter(sFilename,true);
  myFile.Write(sLines);
  myFile.Close();
 }
 
 ///<summary>
 /// Liefert den Inhalt der übergebenen Zeilennummer zurück.
 ///</summary>
 ///<param name="sFilename">Pfad zur Datei</param>
 ///<param name="iLine">Zeilennummer</param>
 public string ReadLine(String sFilename, int iLine)
 {
  string sContent = "";
  float fRow=0;
  if (File.Exists(sFilename))
  {
   StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
   while (! myFile.EndOfStream && fRow < iLine)
   {
    fRow++;
    sContent = myFile.ReadLine(); 
      }
   myFile.Close();
   if(fRow < iLine) 
    sContent = "";
  }
  return sContent;
 }
 
 /// <summary>
 /// Schreibt den übergebenen Text in eine definierte Zeile.
 ///</summary>
 ///<param name="sFilename">Pfad zur Datei</param>
 ///<param name="iLine">Zeilennummer</param>
 ///<param name="sLines">Text für die übergebene Zeile</param>
 ///<param name="bReplace">Text in dieser Zeile überschreiben (t) oder einfügen (f)</param>
 public void WriteLine(String sFilename, int iLine, string sLines, bool bReplace)
 {
  string sContent = "";
  string[] delimiterstring = { "\r\n" };
 
  if (File.Exists(sFilename))
  {
   StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
   sContent = myFile.ReadToEnd();
   myFile.Close();
  }
 
  string[] sCols = sContent.Split(delimiterstring, StringSplitOptions.None);
 
  if (sCols.Length >= iLine)
  {
   if (!bReplace)
    sCols[iLine - 1] = sLines + "\r\n" + sCols[iLine - 1];
   else
    sCols[iLine - 1] = sLines;
 
   sContent = "";
   for (int x = 0; x < sCols.Length-1; x++)
   {
    sContent += sCols[x] + "\r\n";
   }
   sContent += sCols[sCols.Length-1];
 
  }
  else
  {
   for (int x = 0; x < iLine - sCols.Length; x++)
    sContent += "\r\n";
 
   sContent += sLines;
  }
 
 
  StreamWriter mySaveFile = new StreamWriter(sFilename);
  mySaveFile.Write(sContent);
  mySaveFile.Close();
 }
}

Wie wird diese Klasse verwendet?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TextDatei c_textdatei = new TextDatei();
 
//Einlesen einer Datei
string fs = c_textdatei.ReadFile(@"c:\text.txt");
 
//Schreiben einer Datei
c_textdatei.WriteFile(@"C:\text.txt", "Hallo Welt!");
 
//Text an eine Datei Anhängen
c_textdatei.Append(@"C:\text.txt", "Hallo Welt!");
 
//Zeilen einer Datei ersetzen
c_textdatei.WriteLine(@"C:\text.txt", 2, "neuer Text für diese Zeile", true);
 
//Zeilen einer Datei ersetzen
c_textdatei.WriteLine(@"C:\text.txt", 2, "eine eingefügte Zeile", false);

2 Gedanken zu „C# – Textdatei – Lesen, Schreiben und zeilenweise Manipulation

  1. sehr gute webseite!!! besser als msdn jedoch fände ich eventuel bei dem source code evtl. eine erklärung gut wie er funktioniert.

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

* Copy This Password *

* Type Or Paste Password Here *