tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
608
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von sinamine
    sinamine sinamine ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    59
    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 :
    1
    2
    3
    4
    5
    
    FileInfo fileInfo = new FileInfo(filename);
    FileStream fileStream;
    FileStream newFileStream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite);
     
    fileStream = [B][COLOR="Red"]File.OpenRead(filename); //oder: fileInfo.OpenRead(); [/COLOR][/B]

    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
     

  2. #2
    engelmarkus engelmarkus ist offline Mitglied Brokat
    Registriert seit
    Sep 2007
    Beiträge
    473
    Du erstellst ja einen schreibgeschützten Stream. Dazu aus dem Objektbrowser:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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 :
    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
    
            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...
    Geändert von engelmarkus (25.04.08 um 16:35 Uhr)
     

  3. #3
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    da Stream IDisposable Schnittstelle implementiert hat ist es vielleicht besser das Objekt zu disposen.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

Ähnliche Themen

  1. Kann nicht auf Datei zugreifen
    Von Didistreu im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 07.02.10, 17:44
  2. File.Move() kann nicht auf Datei zugreifen
    Von tecla im Forum .NET Café
    Antworten: 22
    Letzter Beitrag: 03.02.10, 19:10
  3. Der Prozess kann nicht auf die Datei zugreifen
    Von PH234X im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 15.09.09, 09:31
  4. Antworten: 2
    Letzter Beitrag: 05.10.06, 11:26
  5. Antworten: 4
    Letzter Beitrag: 07.09.04, 01:15