Entwickler-Ecke
IO, XML und Registry - Fehlerhaftes Dateihandling
DevInet - Mi 25.08.10 15:45
Titel: Fehlerhaftes Dateihandling
Hallo Zusammen.
Ich stehe momentan vor dem Problem, dass bei meinem Programm die alten Dateien nicht richtig durch die geänderten Dateien ersetzt werden.
Zum Beispiel lese ich mit meinem, Programm eine Liste von Mitarbeitern ein. Nun kann ich über das Programm neue Mitarbeiter hinzufügen, löschen oder ändern.
Wenn ich einen Eintrag lösche oder änder wird eine zweite Datei mit dem geänderten Inhalt erstellt und diese Datei ersetzt die Originaldatei und wird dabei mit dem Namen der Originaldatei versehen. Soweit zur Theori. In der Praxis ist die Datei aber leider leer und heisst immernoch so, wie die "Änderungs"-Datei.
Hier ein Code-Beispiel:
C#-Quelltext
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:
| private void btn2_Click(object sender, EventArgs e) { string kmit = txtBox1.Text; string nmit = txtBox2.Text; int tnmit = Convert.ToInt32(txtBox3.Text); int fnmit = Convert.ToInt32(txtBox4.Text); int zNr = lstBox1.SelectedIndex; string miAlt = lstBox1.Items[zNr].ToString(); StreamWriter schleife = new StreamWriter(@"T:\transfer\hes\templates\mitarbeiter2.csv", true); System.Collections.IEnumerator entryItr = lstBox1.Items.GetEnumerator(); while (entryItr.MoveNext()) { string entry = entryItr.Current.ToString(); if (entry != miAlt) { schleife.WriteLine(entry); } else { string ersatz = Regex.Replace(entry, miAlt, kmit + ";" + nmit + ";" + ";" + tnmit + ";" + fnmit); schleife.WriteLine(ersatz); } } schleife.Close();
string path = @"T:\transfer\hes\templates\mitarbeiter.csv"; string path2 = @"T:\transfer\hes\templates\mitarbeiter2.csv";
if (!File.Exists(path)) { using (FileStream fs = File.Create(path)) { } }
if (File.Exists(path2)) File.Delete(path2);
File.Move(path, path2);
} |
Was habe ich übersehen? Ich komme einfach nicht dahinter. Würde mich über Hilfe freuen.
Danke im vorraus.
mfg
DevInet
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Mi 25.08.2010 um 15:54
Th69 - Mi 25.08.10 16:44
Wenn ich mich nicht verguckt habe, dann
- beschreibst du "mitarbeiter2.csv"
- legst du "mitarbeiter.csv" an, falls es noch nicht existiert
- löscht du "mitarbeiter2.csv", falls es existiert
- dann verschiebst du "mitarbeiter.csv" nach "mitarbeiter2.csv" (d.h. benennst es um)
So und nun überleg mal, was daran nicht stimmt -)
DevInet - Mi 25.08.10 17:00
Ok, fehler is mir jetzt klar. Gibts noch ne andere möglichkeit das zu lösen? wenn ich nur das "File.Move(path, path2);" verwende bekomme ich ne Fehlermeldung.
DevInet - Mi 25.08.10 17:30
So. Was lange wärt, wird endlich gut. Hab den gendanklichen gordischen Knoten bei mir gelöst und jetzt funzt es.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!