Blockweises Lesen einer Datei
-
Ich muss aus einem Textfile der Form
Hans,Peter,123,ja,nein,Michael,Bauer,,nein,nein usw.
blockweise die einzelnen Elemente auslesen.
Geht das irgendwie einfacher als mit dem Read-Befehl ?
Danke für Antworten
mfG
Gawan
-
Servus,
wenn du als Seperator "," hast dann kannst du das so machen:
StreamReader fFile = new StreamReader("C:\\Katzenklo.txt", System.Text.Encoding.GetEncoding("ISO-8859-1")); string[] strText = fFile.ReadToEnd().Split(",".ToCharArray()); fFile.Close();
Fehlerbehandlung bekommst du bestimmt selber hin
*winke*
Hellsgore
-
Danke für die rasche Hilfe, aber wenn ich den Code so anwende steht in der Console nur System.String[]
static void Main(string[] args) { string a; StreamReader fFile = new StreamReader("C:\\test.txt", System.Text.Encoding.GetEncoding("ISO-8859-1")); string[] strText = fFile.ReadToEnd().Split(",".ToCharArray()); fFile.Close(); Console.WriteLine(strText); a=Console.ReadLine(); }
-
Servus,
ajo, das ist ja auch ein StringArray. Ansprechen mit strText[1], strText[2] etc.
*winke*
Hellsgore
-
maaa...ich bin so blöd
natürlich gehts, nur mit Console.WriteLine(strText) wird sich ned viel abspielen wenn des strText ein Array ist *ggg*
DANKE, haut jetzt hin
-
gleichzeitig bemerkt :):)
-
hehe *g*
-
hallo - ich nochmal
gibts da auch eine Möglichkeit die Daten in Blöcken auszulesen ?
optimal wäre eine lösung auf diese Art:
for (int i=0;i<10;i++) { lies Block von 5 elementen die durch ',' getrennt sind in ein array }
Ich bin da leider zu wenig Programmierer um deinen Code dmeentsprechend umzuschreiben
-
abgekürzt wärs natürlich auch praktisch alle zeichen bis zum ',' in ein arrayfeld zu kopieren, die nächsten zeichen ins nächste arrayfeld bis zu einem Abbruchkriterium ( in meinem Fall gibts nur 6 Datenfelder) die sich dann zigtausendmal wiederholen
-
Servus,
ei gucke mal, du hast doch einen Array. In diesem Stehen alle Elemente drin die durch ein "," getrennt sind. Mann könnte doch z.B. soetwas machen:
using System.Collections; string[] strArrText..... //Dein Array string strLineSep = string.Empty; ArrayList arrLines = new ArrayList(); int iCount = 0; for (int i = 0; i < strArrText.length; i++) { strLineSep += strArrText[i] + ","; iCount++; if (iCount == 5) { iCount = 0; arrLines.Add(strLineSep); strLineSep = string.Empty; } } //Hier noch Rest if (iCount > 0) { iCount = 0; arrLines.Add(strLineSep); strLineSep = string.Empty; } //Dann dein Consoloenwrite for (int i = 0; i < arrLines.Count; i++) Console.RubbeldieKatz(arrLines[i].ToString());
Ist nur ein Beispiel. Habe Heute keine große Lust zu überlegen.
*winke*
Hellsgore
-
danke - werds mir anschaun
das Problem bei dem vorherigen Array war, dass ich mit 500.000 Einträgen arbeite und das Array 210MB speicher benötigt wenn es voll ist :):):)
-
Servus,
das ist Scheisse, dann lese die Datei sequentiell, Satz für Satz und gebe diese dann direkt am Bildschrim aus.
Bsp.:
StreamReader fFile = new StreamReader("C:\\Katzenklo.txt", System.Text.Encoding.GetEncoding("ISO-8859-1")); string strInput = string.Empty; while ((strInput = fFile.ReadLine()) != null) { string[] strArrLines = strInput.Split(",".ToCharArray()); while (strArrLines.Length > 0) { // dann liest du 5 Elemente, schreibst die auf den Bildschirm und löschst sie wieder aus dem Array. Dann liest du weitere 5 Element löschst diese wieder bis das Array leer ist } } fFile.Close();
Dann flummst du nicht alles in den Speicher sondern gibst direkt aus. Das ist jetzt nur ein Ansatz den Rest bekommst du sicherlich auch alleine hin.
*winke*
Hellsgore