[C#] Datei öffnen, obwohl anderer Prozess sie schon offen hat
-
Hi,
ich habe folgendes Problem: Ich will eine Textdatei öffnen und den Inhalt zb. in eine TextBox oder RichTextBox schreiben... leider hab ich da ein Problem, wenn die Datei schon von einem anderen Programm verwendet wird... Windows-Notepad hat da scheinbar keine Probleme damit, kann die Datei wunderbar öffnen. Es geht nur darum, dass ich ein kleines Tool habe, dass mir den Inhalt einer Textdatei ohne Bestätigung anzeigt, wenn sich die Datei geändert hat. Bei allen mir bekannten Editoren kommt halt so eine Meldung "... hat sich außerhalb des Editors geändert, soll die Datei neu geladen werden?".
Kann ich den Inhalt der Datei irgendwie auslesen, obwohl die Datei verwendet wird?
Danke,
T
-
Schau mal hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemIOFileSystemWatcherClassTopic.asp
Ich denke, das könnte dir helfen.Greets
M.T.
-
Hi,
danke für den Tipp. Ich hab bis jetzt mit einem Timer manuell überprüft, ob sich die Datei geändert hat
Das war aber eigentlich nicht das, was ich suche, damit kann ich den Inhalt der Datei ja nicht anzeigen lassen. Konkret hab ich folgendes Problem: Ich hab ein Programm, das beim Start eine Logdatei öffnet (mit AutoFlush = true), und diese beim Beenden wieder schließt. Jetzt will ich aber in einem anderen Programm die Logdatei öffnen, und alle Eintragungen gleich angezeigt bekommen, ohne irgendwas zu bestätigen.
Nur leider sehe ich keine Möglichkeit, die Datei zu öffnen, wenn sie im anderen Programm noch geöffnet ist.
Kann mir da jemand weiterhelfen?
Danke
T
-
FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
-
Hi,
laut MSDN müsste ich das in das Programm einbauen, dass die Logdatei schreibt. Hab das ausprobiert (öffne die Datei jetzt mit 'System.IO.FileMode.Open, System.IO.FileAccess.Write, System.IO.FileShare.Read', und im anderen Programm mit 'FileMode.Open, FileAccess.Read, FileShare.Read'. Funktioniert aber leider immer noch nicht, kriege immer noch die IOException "The process cannot access the file ... because it is being used by another process."
Bye,
T
-
Hi,
hab jetzt noch mal bisschen gegoogelt, und folgendes gefunden:
http://www.issociate.de/board/post/186420/File_access.htmlund tatsächlich, so gehts:
StreamReader rdr = new StreamReader(new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); //FileStream fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //StreamReader rdr = new StreamReader(fs);
Mit dem auskommentierten Code gehts nicht...
hat sich also erledigt, danke für die Tipps
Bye,
T
-
FileStream fs = File.Open( "...", FileMode.Open, FileAccess.Read, FileShare.Read ); StreamReader sr = new StreamReader( fs ); MessageBox.Show( sr.BaseStream.ToString() );
Funktioniert bei mir wunderbar.
-
Hi,
das funktioniert bei mir nur, wenn die Datei von keinem anderen Prozess verwendet wird...
hmm, sollte ich evtl. noch mal bisschen dran rumtesten...Bye,
T