VB.NET Prüfen ob eine Datei Geöffnet ist, bevor Sie mit einem Lese - /Schreibzugriff?
Gibt es eine Methode um zu überprüfen, dass eine Datei geöffnet ist? Das einzige, was ich denken kann, ist die Try/Catch
zu sehen, wenn ich kann fangen Sie die Datei-öffnen Ausnahme, aber ich dachte mir, dass eine Methode zur Verfügung, um return true/false wenn die Datei geöffnet ist.
Derzeit mit System.IO
und den folgenden code unter die Klasse Wallet
.
Private holdPath As String = "defaultLog.txt"
Private _file As New FileStream(holdPath, FileMode.OpenOrCreate, FileAccess.ReadWrite)
Private file As New StreamWriter(_file)
Public Function Check(ByVal CheckNumber As Integer, ByVal CheckAmount As Decimal) As Decimal
Try
file.WriteLine("testing")
file.Close()
Catch e As IOException
'Note sure if this is the proper way.
End Try
Return 0D
End Function
Jegliche Hinweise werden dankbar angenommen! Danke!!!!
- Der Umgang mit Datei.GetLastAccessTime() vielleicht?
- Es gibt keine direkte Möglichkeit zu erkennen, dass eine Datei geöffnet wird.
- Dies ist, was ich gebeten habe, stackoverflow.com/questions/6706312/... und bekam die Antwort
- Es gibt also keinen Weg, um wirklich zu wissen, ob eine Datei aktuell geöffnet oder nicht? auch in VS 2010?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Marshal
wird durch ein blaues etwas unterstreichen, bewegen Sie die Maus über diese und es wird Euch einen Hinweis geben, was falsch ist!Value of type 'String' cannot be converted to 'System.IO.FileInfo'.
Call IsFileOpen(new FileInfo(filePath))
file.Open
ParameterGibt es wirklich keinen Sinn, mit einem "wird" Datei wird verwendet "check" - Funktion, da müssen Sie noch haben, versuchen zu fangen, um den Fall behandeln, dass die Datei nicht geöffnet werden kann. Die Datei offen ist, kann nicht für viel mehr Gründe, als es gerade geöffnet ist.
Ebenfalls mit einer Funktion zu tun, eine Prüfung ist keine Garantie für Erfolg. Die 'ist die Datei, die in Verwendung check' könnte return false nur für die Datei zu öffnen tritt ein Fehler mit einer Datei bereits geöffnet Fehler, denn in der Zeit zwischen den schauen und versuchen, die Datei zu öffnen eröffnet, wurde es von jemand anderem.
Sieht es aus wie die zwei Vorschläge aus dieser MSDN-forum posten sowohl zu versuchen, die Datei zu öffnen.
Die erste ist ähnlich zu dem, was Sie jetzt tun, und der zweite beinhaltet die Verwendung der Windows API-Funktion (CreateFile) und die Prüfung auf ein ungültiges handle für die Datei ist in Verwendung. In beiden Fällen sind Sie angewiesen auf einen Fehler, um zu bestimmen, wenn die Datei geöffnet ist oder nicht. Kurz gesagt, meiner Meinung nach die Methode, die Sie verwenden richtig ist, da nicht ein System.IO.Datei.IsOpen-Eigenschaft.