2014-11-27 2 views
-1

У меня есть этот код, который обновляет базу данных SQL, используя файлы в папке, и удаляет их после обновления, но дает мне исключение всякий раз, когда пустой файл находится в папке. Он дает ошибку «Ссылка на объект не установлена ​​на экземпляр объекта». Я действительно хочу сделать, прежде чем обрабатывать каждый файл, я должен проверить каждый файл, если его пустой, а затем удалить его, иначе обработать его. это код:Как проверить пустой файл в папке?

Любая помощь будет очень признательна.

Dim dirinfo5 As DirectoryInfo 
     Dim allFiles5() As FileInfo 
     dirinfo5 = New DirectoryInfo("E:\UPDATE\") 
     allFiles5 = dirinfo5.GetFiles("*.csv") 
     Thread.Sleep(1000) 
     If allFiles5.Length <> 0 Then 
      Try 
       For Each fl5 As FileInfo In allFiles5 
        'MsgBox(fl.FullName.ToString()) 
        Dim con As SqlConnection = New SqlConnection(SQL_con2) 
        Dim sr As StreamReader = New StreamReader(fl5.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].[LData]" 
        bc.BatchSize = dt.Rows.Count 
        con.Open() 
        bc.WriteToServer(dt) 
        bc.Close() 
        con.Close() 
        sr.Close() 
        System.IO.File.Delete(fl5.FullName) 
        sr.Dispose() 
       Next 
      Catch ex As Exception 
       MsgBox(ex.Message) 
      End Try 
     End If 

ответ

0

Вы можете использовать File.ReadAllText метод: он возвращает String, так что вы можете проверить его. Length.

Смежные вопросы