Autor Beitrag
DevInet
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Mi 25.08.10 15:45 
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:
ausblenden volle Höhe 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)
        {
            
            //Benennung der TextBox-Inhalte
            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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 25.08.2010 um 15:54
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 -)

Für diesen Beitrag haben gedankt: DevInet
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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.