Entwickler-Ecke

IO, XML und Registry - Streamreader - Kein zugriff auf datei..


deada - Do 25.11.10 16:50
Titel: Streamreader - Kein zugriff auf datei..
hallo alleseits,

habe mit diesem Code:

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:
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:
            private void BTsaveCurrList_Click(object sender, EventArgs e)
            {
                string selectedParty = CBparty.SelectedItem.ToString();
                string FileName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\StepSaveItems.txt";
                string itemValue;

                
                
                StreamWriter writeFile = new StreamWriter(FileName);


                if (File.Exists(FileName))
                {
                    writeExistingContent();
                    writeFile.WriteLine("Party: " + selectedParty);
                    writeFile.WriteLine("--------------------------------------");


                    foreach (object itemo in CLBlist.CheckedItems)
                    {

                        itemValue = itemo.ToString();

                        if (File.Exists(FileName))
                        {

                            writeFile.WriteLine(itemValue);

                        }
                        else
                        {
                            writeFile.WriteLine(itemValue);

                        }

                    }

                    writeFile.WriteLine("--------------------------------------");
                    writeFile.WriteLine();
                }
                else
                {
                    writeFile.WriteLine("Party: " + selectedParty);
                    writeFile.WriteLine("--------------------------------------");


                    foreach (object itemo in CLBlist.CheckedItems)
                    {

                        itemValue = itemo.ToString();

                        if (File.Exists(FileName))
                        {

                            writeFile.WriteLine(itemValue);

                        }
                        else
                        {
                            writeFile.WriteLine(itemValue);

                        }

                    }

                    writeFile.WriteLine("--------------------------------------");
                    writeFile.WriteLine();
                }
                writeFile.Close();

            }


            public String writeExistingContent()
            {
                string existingContent = "";
                string FileName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\StepSaveItems.txt";

                StreamReader readContent = new StreamReader(FileName);
                existingContent = readContent.ReadToEnd();
                readContent.Close();

                return existingContent;
            
            }


folgende Exception:
Der Prozess kann nicht auf die Datei "G:\Users\Sa\AppData\Local\StepSaveItems.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

Ieine Lösung?


Moderiert von user profile iconKha: Topic aus WinForms verschoben am Do 25.11.2010 um 20:05


jaenicke - Do 25.11.10 17:16

Du hast die Datei im StreamWriter schon offen und versuchst danach in writeExistingContent auf die Datei zuzugreifen.


Trashkid2000 - Do 25.11.10 17:18

Wollte ich auch gerade schreiben.

Und den Sinn von

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if (File.Exists(FileName))
{
   writeFile.WriteLine(itemValue);
}
else
{
   writeFile.WriteLine(itemValue);
}
musst Du mir mal genauer erklären!

Marko


deada - Do 25.11.10 18:28

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du hast die Datei im StreamWriter schon offen und versuchst danach in writeExistingContent auf die Datei zuzugreifen.


wie soll ich es dann lösen? ich beim klick auf den button den bereits vorhandenen inhalt der datei mit dem rest speichern..


jaenicke - Do 25.11.10 20:43

Wie wäre es zuerst den alten Inhalt auszulesen und dann die Datei zum Schreiben zu öffnen?

Aber davon abgesehen: Wozu willst du den Inhalt denn überhaupt auslesen, wenn du ohnehin nur weitere Daten anhängen willst?

Stell dir einmal vor du willst in ein Notizbuch schreiben. Was du jetzt machst ist:
Zuerst setzt du auf Seite 10 den Stift zum Schreiben an und wunderst dich dann, dass du so schlecht parallel am Anfang anfangen kannst zu lesen...
Und warum solltest du zuerst den alten Inhalt lesen, wenn du doch nur dahinter weiterschreiben willst?

Schau dir einfach einmal die möglichen Konstruktoren an:
http://msdn.microsoft.com/de-de/library/system.io.streamwriter.streamwriter.aspx
Ja, ich weiß: zu viel zu lesen... Schau dir den an...
http://msdn.microsoft.com/de-de/library/36b035cb.aspx


deada - Do 25.11.10 21:26

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es zuerst den alten Inhalt auszulesen und dann die Datei zum Schreiben zu öffnen?

Aber davon abgesehen: Wozu willst du den Inhalt denn überhaupt auslesen, wenn du ohnehin nur weitere Daten anhängen willst?

Stell dir einmal vor du willst in ein Notizbuch schreiben. Was du jetzt machst ist:
Zuerst setzt du auf Seite 10 den Stift zum Schreiben an und wunderst dich dann, dass du so schlecht parallel am Anfang anfangen kannst zu lesen...
Und warum solltest du zuerst den alten Inhalt lesen, wenn du doch nur dahinter weiterschreiben willst?

Schau dir einfach einmal die möglichen Konstruktoren an:
http://msdn.microsoft.com/de-de/library/system.io.streamwriter.streamwriter.aspx
Ja, ich weiß: zu viel zu lesen... Schau dir den an...
http://msdn.microsoft.com/de-de/library/36b035cb.aspx


Der Button wird öfters im laufendem Programm gedrückt, deswegen das öfnen beider streamas. Sonst würd er mir die datei überschreiben oder?


deada - Do 25.11.10 21:32

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es zuerst den alten Inhalt auszulesen und dann die Datei zum Schreiben zu öffnen?

Aber davon abgesehen: Wozu willst du den Inhalt denn überhaupt auslesen, wenn du ohnehin nur weitere Daten anhängen willst?

Stell dir einmal vor du willst in ein Notizbuch schreiben. Was du jetzt machst ist:
Zuerst setzt du auf Seite 10 den Stift zum Schreiben an und wunderst dich dann, dass du so schlecht parallel am Anfang anfangen kannst zu lesen...
Und warum solltest du zuerst den alten Inhalt lesen, wenn du doch nur dahinter weiterschreiben willst?

Schau dir einfach einmal die möglichen Konstruktoren an:
http://msdn.microsoft.com/de-de/library/system.io.streamwriter.streamwriter.aspx
Ja, ich weiß: zu viel zu lesen... Schau dir den an...
http://msdn.microsoft.com/de-de/library/36b035cb.aspx


okay dank dir, hatte wohl logik probleme. dank dir =)