该进程无法访问文件' file.csv'因为它正被另一个进程使用

时间:2014-11-05 09:43:01

标签: vb.net sql-server-2008 csv

我有一个代码处理文件夹中的每个文件,并将文件中的数据发送到SQL数据库,然后删除该文件。但我常常得到这个例外“进程无法访问文件'file.csv',因为它正被另一个进程使用。”请任何人都能指出我正确的方向,真的很感激。

代码如下所示:

    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

0 个答案:

没有答案