Function to test whether file is in use I needed a method to test whether a given file is in use. Is the code below up to the task?

Public Function IsFileInUse(path As String) As Boolean
    If IO.File.Exists(path) Then
        Try
            Using fs = IO.File.OpenWrite(path)
                'If stream can write to the file, it suggests the file is not in use.
                Return Not fs.CanWrite
            End Using
        Catch ex As Exception
            'An exception was raised when trying to create a write stream
            'This suggests the file is in use.
            Return True
        End Try
    Else
        'File does not exists, therefore it is not in use:
        'a file could be written anew to the provided path.
        Return False
    End If
End Function
You should first ask yourself, why do you write a method to check if a file is in use.  

You can't use this method to avoid exceptions, because although your method returns False just a microsecond later the file could be opened exclusivly by another program. You still would need to do any file operation inside a Try..Catch block. So the best way would be to do just that. 



Looking at your code, I would suggest to use a guard condition to save one level of indentation like so  

If Not IO.File.Exists(path) Then 
    Return False
End If
Try....


Using File.OpenWrite(string) would be enough because the only difference to Open(FileMode, FileAccess, FileShare) would be the FileMode value having FileMode.OpenOrCreate and the FileAccess value having FileAccess.Write

If you want to go the way you have posted as answer you could omit the FileAccess.ReadWrite and FileShare.None enumeration because the Open(FileMode) method just calls the overloaded Open(FileMode, FileAccess, FileShare) method with the same values as your call.  

What I like about your code is that you apply the .NET Naming GuideLine and your using of the Using to make sure that the stream is closed properly. 

What I dislike is that you don't check wether path is null. Proper method parameter validation for public methods should always be done.