Wie lese ich eine Datei, die gerade benutzt wird, wie Windows beim Kopieren?

8

Eine meiner Anwendungen soll Dateien lesen (und nur lesen), die möglicherweise verwendet werden.

Wenn Sie jedoch eine Datei lesen, die beispielsweise in Microsoft Word bereits geöffnet ist, gibt diese Anwendung System.IO.IOException :

aus
  

Der Prozess kann nicht auf die Datei "& lt; Dateiname hier & gt;" zugreifen weil es von einem anderen Prozess verwendet wird.

Der Code zum Lesen der Datei lautet:

%Vor%

Natürlich wird diese Ausnahme erwartet, da die Datei bereits verwendet wird.

Wenn ich nun das Betriebssystem anfringe, die Datei an einen neuen Ort zu kopieren, dann funktioniert es:

%Vor%

Was ist die Magie von File.Copy , die es erlaubt, die bereits von einer Anwendung verwendete Datei zu lesen, und vor allem, wie man diese Magie benutzt, um die Datei zu lesen, ohne eine temporäre Kopie zu erstellen?

    
Arseni Mourzenko 06.12.2010, 23:04
quelle

2 Antworten

4

Nette Frage dort. Sehen Sie sich das an, es scheint, dass Sie FileShare verwenden. Nur Lesen ist der Schlüssel, es ist einen Versuch wert.

Ссылка

    
Tom 06.12.2010, 23:10
quelle
0

Versuchen Sie, FileShare.ReadWrite | FileShare.Delete aus dem FileStream-Konstruktor oder mindestens FileShare.Delete zu entfernen.

    
skajfes 06.12.2010 23:09
quelle

Tags und Links