我有从给定位置下载文件然后打开它进行处理的代码。我通过 FtpWebRequest 和 FtpWebResponse 对象通过 FTP 执行此操作,将响应读取到 StreamReader,然后通过 StreamWriter 将该流写入文件。
我遇到的问题是,当我稍后将文件加载到 StreamReader 中时,我收到一个异常,说我的文件正在被另一个进程使用。有趣的是,如果文件无法下载,则不会发生这种情况,尽管在这种情况下我也没有遇到异常。
这是相关的代码部分:
Try
Dim ftpResponse As FtpWebResponse = DirectCast(ftpRequest.GetResponse(), FtpWebResponse)
stream = ftpResponse.GetResponseStream()
reader = New StreamReader(stream, Encoding.UTF8)
Dim destinationFile As String = _workingDirectory + _filename
writer = New StreamWriter(destinationFile, False)
writer.Write(reader.ReadToEnd())
result = True
Catch ex As Exception
EventLog.LogEvent("UpdateInventory", String.Format("Unable to download file: {0}. <br/ > {1}", downloadUri, ex.ToString()), BVSoftware.BVC5.Core.Metrics.EventLogSeverity.Error)
Finally
If stream IsNot Nothing Then
stream.Close()
End If
If reader IsNot Nothing Then
reader.Close()
End If
If writer IsNot Nothing Then
writer.Close()
End If
End Try