1

C# - Von Prozess verwendete Datei auslesen.

Frage von KlickKlackKluck KlickKlackKluck

Ich versuche eine Datei zu öffnen bzw zu lesen die jedoch von einem anderen Prozess verwendet wird (Exception: "Der prozess kann nicht auf die datei zugreifen da sie von einem anderen prozess verwendet wird.")

Es ist mir bewusst das ich erst diesen Prozess (meist StreamWriter/Reader o.ä.) schließen müsste, um die Datei wieder zu öffnen und auszulesen. In diesem fall versuch ich jedoch gezielt die Datei zu öffnen obwohl sie von einem anderen Prozess verwendet wird (Datei wird dauerhaft durch einen Dienst geändert).

Meine Frage ist nun: Ist es möglich diese Datei zu öffnen/lesen obwohl sie von einem anderen Prozess verwendet wird? (wenn ja, bitte lösung Posten)

Ich habe bisl im Internet gesucht und die FileStream Klasse gefunden die als Parameter z.B. "FileShare" übernimmt und ebenso die Methode "Unlock" besitzt (Description: "Ermöglicht anderen Prozessen den Zugriff auf die gesamte Datei oder einen Teil der Datei, die zuvor gesperrt war."). Ich teste momentan noch so das ich eben durch StreamWriter in eine Datei schreibe und ohne diese Klasse zu schließen, versuche danach auf die von der Klasse geöffneten Datei zuzugreifen; jedoch wollen all meine Versuche nicht hinhaun und ebenso gibt's kein vergleichbares Beispiel im Internet zu finden, was den selben vorgang zeigt.

Bitte also um Hilfe, wenn es möglich ist und wenn eben FileStream (Unlock) dafür zum einsatz kommt (wäre logisch) dann bitte Beispiel Posten. Danke.

Fragen zu gleichen Themen finden

Antworten (2)

  • 1
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von Bacchus1971 Bacchus1971

    Ich finde genug Codebeispiele über Google mit den Suchbegriffen "C# locked file read"

    Im Zweifelsfall eben einfach auf Englsch suchen, das bringt meistens deutlich mehr Ergebnisse. Und als Programmierer sollte man Englisch einigermassen gut beherrschen ;)

    Kommentar von KlickKlackKluck KlickKlackKluckKlickKlackKluck

    wow, danke, gleich das erste gefundene Beispiel hat funktioniert. Obwohl ich sagen muss das ich nah dran war:

    using (StreamReader SR = new StreamReader(new FileStream(OFD.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)))
    

    Dabei hätt ich einfach nur "ReadWrite" bei FileShare nutzen müssen. >.<

    Nochmal danke, werd' deine Antwort später als 'hilfreichste Antwort' auszeichnen ;)

    Kommentar von Bacchus1971 Bacchus1971Bacchus1971

    Na immer doch gerne behilflich unter Kollegen ;)

    Kommentar von DataJockey DataJockeyDataJockey

    nur mal als Hinweis für die Zukunft:

    das klappt bei dir nur, weil der andere Prozess die Datei nicht mit ShareDenyRead aufgemacht hat. Damit würde der andere Prozess ein paralleles Lesen verbieten.

    gruss, dj

    Kommentar von Bacchus1971 Bacchus1971Bacchus1971

    Jo, aber dann dürfte eh Hopfen und Malz verloren sein.

  • 0
    Antwort von fragX fragX

    bei c könnte ich dier vl. helfen aber ich kann C# nicht scripten und vielleicht bist du im falschem forum

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.