Vb.net 进程无法访问文件“file.csv”,因为另一进程正在使用该文件
我有一个代码,它处理文件夹中的每个文件,并将文件中的数据发送到SQL数据库,然后删除该文件。但我经常会遇到这样的异常情况,进程无法访问文件“file.csv”,因为它正被另一个进程使用。请任何人给我指出正确的方向,我会非常感激的 代码如下所示:Vb.net 进程无法访问文件“file.csv”,因为另一进程正在使用该文件,vb.net,sql-server-2008,csv,Vb.net,Sql Server 2008,Csv,我有一个代码,它处理文件夹中的每个文件,并将文件中的数据发送到SQL数据库,然后删除该文件。但我经常会遇到这样的异常情况,进程无法访问文件“file.csv”,因为它正被另一个进程使用。请任何人给我指出正确的方向,我会非常感激的 代码如下所示: Dim dirinfo As DirectoryInfo Dim allFiles() As FileInfo dirinfo = New DirectoryInfo("E:\SQLUPDATE\CAC") allFil
Dim dirinfo As DirectoryInfo
Dim allFiles() As FileInfo
dirinfo = New DirectoryInfo("E:\SQLUPDATE\CAC")
allFiles = dirinfo.GetFiles("*.csv")
If allFiles.Length <> 0 Then
Try
For Each fl As FileInfo In allFiles
'MsgBox(fl.FullName.ToString())
Dim con As SqlConnection = New SqlConnection(SQL_con2)
Dim sr As StreamReader = New StreamReader(fl.FullName)
Dim line As String = sr.ReadLine
Dim value() As String = line.Split(Microsoft.VisualBasic.ChrW(44))
Dim dt As DataTable = New DataTable
Dim row As DataRow
For Each dc As String In value
dt.Columns.Add(New DataColumn(dc))
Next
While Not sr.EndOfStream
value = sr.ReadLine.Split(Microsoft.VisualBasic.ChrW(44))
If (value.Length = dt.Columns.Count) Then
row = dt.NewRow
row.ItemArray = value
dt.Rows.Add(row)
End If
End While
Dim bc As SqlBulkCopy = New SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock)
bc.DestinationTableName = "[DB].[dbo].[CAC_LData]"
bc.BatchSize = dt.Rows.Count
con.Open()
bc.WriteToServer(dt)
bc.Close()
con.Close()
sr.Close()
System.IO.File.Delete(fl.FullName)
sr.Dispose()
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
尝试用File.Delete和sr.Dispose替换该行。如果不是这样,那么请告诉我们哪一行生成异常。问题基本上是FTP客户端正在将文件写入此文件夹,同时此函数尝试处理文件,因为到那时,如果FTP客户端尚未完成文件写入,发生冲突时,它读取的文件正常,但当涉及到删除时,它抛出此异常。所以我需要一些检查,看看文件是否由FTP客户端发布,然后继续。