Autor Beitrag
MarcusDidius
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 04.06.11 11:16 
ausblenden 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:
 class IOAccess
    {
        private string fileName = "D:\\ein.txt";

        public string read()
        {
            string input = "";
            
            FileStream fileStream = new FileStream(fileName, FileMode.Open);
            StreamReader streamReader = new StreamReader(fileName);

            while (streamReader.Peek() != -1)
            {
                input += streamReader.ReadLine();
            }
            streamReader.Close();
            fileStream.Close();

            return input;
        }

        public void write(string output) {
            FileStream fileStream = new FileStream(fileName, FileMode.Create);
            StreamWriter streamWriter = new StreamWriter(fileStream);
            streamWriter.WriteLine(output);
            streamWriter.Close();
            fileStream.Close();
        }
    }

write funktioniert. Bei Aufruf von read kommt eine IOException mit der Message
"Der Prozess kann nicht auf die Datei D:\ein.txt zugreifen"
Woran kann das liegen? Ich hab doch den Stream geschlossen.

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Sa 04.06.11 20:42 
Hallo und :welcome:
Das Problem bei der read()-Methode liegt hier:
ausblenden C#-Quelltext
1:
2:
FileStream fileStream = new FileStream(fileName, FileMode.Open);
StreamReader streamReader = new StreamReader(fileName);
Du öffnest einen FileStream, der die Datei öffnet. Und dann noch ein StreamReader, der auch die Datei öffnen soll.
Du musst dem StreamReader einfach den fileStream als Übergabeparameter übergeben, damit er von dem geöffneten Stream liest. Also so:
ausblenden C#-Quelltext
1:
2:
FileStream fileStream = new FileStream(fileName, FileMode.Open);
StreamReader streamReader = new StreamReader(fileStream);
Und am besten auch using-Blöcke benutzen, dann sparst Du Dir auch das Close() bzw. das Dispose().
Oder aber benutze einfach die statischen Methoden der File-Klasse:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
public string Read()
{
  return File.ReadAllText(fileName);
}

public void Write(string output)
{
  File.WriteAllText(fileName, output);
}
LG, Marko