我在我的出口数据集到Excel文件,我想确保我控制住任何文件中的错误。 其中特别是我关心的是访问一个文件,该文件已经打开。 一般发生IOException,说:“该进程无法访问文件‘C:\报告\ report300.csv’,因为它正被另一个进程使用。” 以下是这将发生错误的行:
Dim output As New IO.StreamWriter(path, False, UnicodeEncoding.Default)
我想我可以只是把它周围的尝试捕捉,但如果一个IOException恰巧心不是与此相关的特定事件? 有没有一种方法,我可以检查,看看是否该文件已经允许该代码运行前打开? 我看着谷歌,但找不到一个直接的答案,尤其是当我在使用Excel。
提前致谢。
您可以使用Marshal.GetLastWin32Error()找出Windows错误导致异常。 例如:
Public Shared Function OpenUnlockedFile(ByVal path As String) As StreamWriter
Dim sw As StreamWriter = nothing
Try
sw = New StreamWriter(path)
Catch ex As IOException When System.Runtime.InteropServices.Marshal.GetLastWin32Error() = 32
REM locked, return nothing
End Try
Return sw
End Function