VB.NET – prüfen ob eine Datei bereits geöffnet ist

Bei der Erstellung einer Anwendung, welche externe Dateien lesen oder schreiben soll, kann es zu Konflikten beim Zugriff kommen. Eventuell wird eine Logdatei, welche man lesen möchte noch von einer anderen Anwendung benutzt. Man erhält einer Fehlermeldung das ein Zugriff nicht möglich ist. Um nun zu prüfen ob die gewünschte Datei sich öffnen lässt, benutze ich folgende Funktion:

Public Function check_file_use(sub_filename as string) as Boolean

Funktion erstellen, Übergabe der zu prüfenden Datei, Rückgabe als Boolean

Dim fs As Integer = FreeFile()

freie Vergabe von einer Dateinummer

If file.Exists(sub_filename) Then

prüfen ob die Datei existiert

Try
FileOpen(fs, sub_filename, OpenMode.Binary , OpenAccess.ReadWrite, OpenShare.LockReadWrite)

versuchen die Datei zuöffnen

Catch
check_file_use = true

True wenn die Datei nicht geöffnet werden kann

Finally
FileClose(fs)

Datei schließen

End if
End Function

Hier die gesamte Funktion:

Public Function func_check_file_use(sub_filename) As Boolean
Dim fs As Integer = FreeFile()
If file.Exists(sub_filename) Then
  Try
     FileOpen(fs, sub_filename, OpenMode.Binary , _
     OpenAccess.ReadWrite, OpenShare.LockReadWrite)
  Catch
     func_check_file_use = true
  Finally
     FileClose(fs)
  End Try
End If
  End Function