VB.NET Prüfen, ob eine Datei geöffnet ist, bevor Sie mit Lesen / Schreiben fortfahren?

8

Gibt es eine Methode, um zu überprüfen, dass eine Datei geöffnet ist? Das einzige, was ich mir vorstellen kann, ist Try/Catch , um zu sehen, ob ich die Datei-Open-Ausnahme abfangen kann, aber ich dachte mir, dass eine Methode verfügbar ist, um wahr / falsch zurückzugeben, wenn die Datei geöffnet ist.

Derzeit verwenden wir System.IO und den folgenden Code unter der Klasse Wallet .

%Vor%

Irgendwelche Hinweise werden geschätzt! Danke!

    
Dayan 02.07.2012, 03:31
quelle

3 Antworten

15
%Vor%     
Jeremy Thompson 02.07.2012, 06:36
quelle
6

Es macht wirklich keinen Sinn, die Funktion 'is file in use check' zu verwenden, da Sie immer noch versuchen müssen, den Fall zu behandeln, dass die Datei nicht geöffnet werden kann. Das Öffnen der Datei kann aus vielen weiteren Gründen fehlschlagen, als dass sie gerade geöffnet ist.

Auch die Verwendung einer Funktion zur Überprüfung ist keine Garantie für den Erfolg. Die 'is file in use' Prüfung gibt möglicherweise nur dann false zurück, wenn die Datei mit einem bereits geöffneten Dateifehler fehlschlägt, da die Zeit zwischen der Überprüfung und dem Versuch, die Datei zu öffnen, von jemand anderem geöffnet wurde.

    
jussij 02.07.2012 08:55
quelle
2

Es sieht wie die zwei Vorschläge aus diesem MSDN Forum aus müssen beide versuchen, die Datei zu öffnen.

Der erste ähnelt dem, was Sie gerade tun, und der zweite beinhaltet die Verwendung einer Windows-API-Funktion (CreateFile) und die Überprüfung auf ein ungültiges Handle, das anzeigt, dass die Datei verwendet wird. In beiden Fällen verlassen sie sich auf eine Fehlerbedingung, um festzustellen, ob die Datei geöffnet ist oder nicht. Kurz gesagt, meiner Meinung nach ist die Methode, die Sie verwenden, korrekt, da nicht eine System.IO.File.IsOpen-Eigenschaft ist.

    
Mark Hall 02.07.2012 04:53
quelle