我正在将我的数据集导出到excel文件,我想确保控制任何文件错误。我特别关注的一个是访问已经打开的文件。发生一般IOException,表示“进程无法访问文件'C:\ Reports \ report300.csv',因为它正由另一个进程使用。”以下是发生错误的行:
Dim output As New IO.StreamWriter(path, False, UnicodeEncoding.Default)
我想我可以抛出一个try catch,但是如果发生了与此特定事件无关的IOException呢?有没有办法在允许此代码运行之前检查文件是否已打开?我看了谷歌,但找不到直接的答案,特别是当我使用excel时。
提前致谢。
答案 0 :(得分:1)
您可以使用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