Datei: lesen eines Files - Prozess kann nicht zugreifen

sinamine

Mitglied
Hey Leute!

Habe folgendes Problem:
ich möchte eine Datei lesen, Daten ändern und wieder zurückschreiben.
Mittels StreamReader und StreamWriter habe ich es auch schon geschafft, allerdings ist dies nicht gerade schnell. Nun habe ich es mit FileStream und File versucht:

Code:
FileInfo fileInfo = new FileInfo(filename);
FileStream fileStream;
FileStream newFileStream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite);

fileStream = File.OpenRead(filename); //oder: fileInfo.OpenRead();

wenn ich File.OpenRead(filename) oder auch fileInfo.OpenRead() ausführen möchte, so erhalte ich folgende Fehlermeldung:

"Der Prozess kann nicht auf die Datei D:\Files\daten.h zugreifen, da sie von einem anderen Prozess verwendet wird."

Hat vielleicht schon mal jemand diesen Fehler gehabt? Ich habe mein File (und es ist ganz egal welches ich verwende) nicht geöffnet oder sonst wo in Verwendung!

Wäre super wenn mir jemand weiterhelfen könnte.

LG @ll
 
Du erstellst ja einen schreibgeschützten Stream. Dazu aus dem Objektbrowser:

Code:
Public Shared Function OpenRead(ByVal path As String) As System.IO.FileStream
    Member von System.IO.File

Zusammenfassung:
Öffnet eine vorhandene Datei zum Lesen.


Parameter:
path: Die Datei, die zum Lesen geöffnet werden soll. 


Rückgabewerte:
Ein schreibgeschützter System.IO.FileStream für den angegebenen Pfad.

Beim anderen dasselbe. Ich würde das so machen:

Code:
        static void Main(string[] args)
        {
            var filename = "Datei.txt";
            var sr = new StreamReader(filename);

            var Daten = new List<String>();

            while (!sr.EndOfStream)
            {
                Daten.Add(sr.ReadLine());
            }

            sr.Close();
            sr.Dispose();

            // Hier die Daten verändern...


            var sw = new StreamWriter(filename, false);

            foreach (var zeile in Daten)
            {
                sw.WriteLine(zeile);
            }

            sw.Flush();
            sw.Close();
            sw.Dispose();
        }

EDIT: Wie du meinst, Spyke...
 
Zuletzt bearbeitet:
Zurück