Ich entwickle ein System, das sequentielle Dateien verarbeitet, die von Cobol-Systemen erzeugt werden. Zurzeit mache ich die Datenverarbeitung mit mehreren Teilstrings, um die Daten zu erhalten, aber ich frage mich, ob es einen effizienteren Weg gibt bearbeiten Sie die Datei als auf mehr Teil zu machen ...Effiziente Verarbeitung sequentieller Dateien C#
auf jetzt, muß ich im Grunde:
using (var sr = new StreamReader("file.txt"))
{
String line = "";
while(!sr.EndOfStream)
{
line = sr.ReadLine();
switch(line[0])
{
case '0':
processType0(line);
break;
case '1':
processType1(line);
break;
case '2':
processType2(line);
break;
case '9':
processType9(line);
break;
}
}
}
private void processType0(string line)
{
type = line.Substring(0, 15);
name = line.Substring(15, 30);
//... and more 20 substrings
}
private void processType1(string line)
{
// 45 substrings...
}
die Dateigröße zwischen 50 MB und 150 MB ... Ein kleines Beispiel für die Datei kann variieren:
01ARQUIVO01CIVDSUQK 00000000000000999999NAME NAME NAME NAME 892DATAFILE 200616 KY0000853 000001
1000000000000000000000000999904202589ESMSS59365 00000010000000000000026171900000000002 0 01000000000001071600000099740150000000001N020516000000000000000000000000000000000000000000000000000000000000009800000000000000909999-AAAAAAAAAAAAAAAAAAAAAAAAA 00000000 000002
1000000000000000000000000861504202589ENJNS63198 00000010000000000000036171300000000002 0 01000000000001071600000081362920000000001N020516000000000000000000000000000000000000000000000000000000000000009800000000000000909999-BBBBBBBBBBBBBBBBBBBBBBBBBB 00000000 000003
9 000004
Effizient? Wie im Code läuft das schneller? Oder der tatsächliche Prozess des Schreibens des Codes ist effizienter? –
Ich habe das nicht selbst versucht, aber versuchen Sie dies http://StackOverflow.com/a/20803/1105235 – rpeshkov
Ein regulärer Ausdruck wird ein * Los * schneller als manuelle Aufteilung sein, weil es keine temporären Zeichenketten erzeugt, bis Sie tatsächlich Extrahiere die gewünschten Matches. Dies ist ein großer Vorteil beim Analysieren großer Dateien, da dadurch Zuordnungen und Speicherbereinigungen drastisch reduziert werden. Sie können auch Namen bestimmten Gruppen zuweisen, zB '" (?. {15}) (? . {14}) 'usw. –