StreamReader



  • Hallo,

    ich öffne mittels:

    StreamReader^ sr = File::OpenText(fiTemp->DirectoryName + "/" + fiTemp->Name);

    ein Textdatei die noch von einem anderen Prozess verwendet wird, dann kommt folgende Fehlermeldung:
    Der Prozess kann nicht auf die Datei xyz.txt zugreifen, da sie von einem anderen Prozess verwendet wird.

    Mit dem Editor von Windows kann ich diese Datei aber problemlos öffnen.
    Wie kann ich es hinbekommen das auch mein Programm die .txt öffnet während der andere Przess noch auf sie zugreift?

    Vielen Danke für die Mühe.



  • Beim öffnen der Datei musst du den FileShare Modus angeben, am leichtesten ehts wohl mittels FileStram im Konstruktor, und diesen filestram kannste dann im Konstruktor des streamreaders verwenden.



  • StreamReader^ sr = File::OpenText(fiTemp->DirectoryName + "/" + fiTemp->Name);
    

    ist falsch da die Klasse virtuell ist. So müsste es heißen:

    StreamReader^ sr = gcnew StreamReader(fiTemp->DirectoryName + "/" + fiTemp->Name);
    

    und via FileStream:

    FileStream^ file = gcnew FileStream(fiTemp->DirectoryName + "/" + fiTemp->Name,FileMode::Open);
    StreamReader^ sr = gcnew StreamReader(file,FileMode::Open)
    

    und um den Prozess zu beenden und du wieder auf die Textdatei zugreifen kannst:

    sr->Close();
    


  • Helfender Frager schrieb:

    StreamReader^ sr = gcnew StreamReader(file,FileMode::Open)
    
    StreamReader^ sr = gcnew StreamReader(file)  // sorry wegem Doppelpost aber ,FileMode::Open kannst du dir schenken
    


  • Die Datei wird von einem anderen Programm geöffnet, da kann ich ja nicht einfach per
    sr->Close();
    den Prozess des anderen Programm´s beenden, oder?
    Oder liegt es "nur" an dem
    FileMode::Open
    was ich vorher noch nicht eingebaut hatte?



  • Hm wie sie wird von einen anderen Programm geöffnet? Fang wieder mit dem Lesen an wenn das Programm fertig ist. Und immer ->Close() machen damit dein oder ein anderes Programm darauf zugreifen kann.



  • Hm wie sie wird von einen anderen Programm geöffnet

    Keine Ahnung, ist leider nicht openSource.

    Fang wieder mit dem Lesen an wenn das Programm fertig ist

    Das geht nicht, weil die beiden Programme paralel laufen müssen.
    Aber irgendwie muss das ja gehen, weil der Editor von Windows kann die Datei problemlos öffnen 😞


Log in to reply