2013-11-09 2 views
1

У меня есть следующий код:Проверяется текстовый файл пуст

Private Sub btnCreateAccount_Click(sender As Object, e As EventArgs) Handles btnCreateAccount.Click 

     Dim fi As New System.IO.FileInfo(strUsersPath) 
     Using r As StreamReader = New StreamReader(strUsersPath) 
      Dim line As String 
      line = r.ReadLine ' nothing happens after this point 
      Do While (Not line Is Nothing) 

       If String.IsNullOrWhiteSpace(line) Then 
        MsgBox("File is empty, creating master account") 
        Exit Do 
       Else 
        MsgBox("Creating normal account") 
       End If 
       line = r.ReadLine 

      Loop 
     End Using 

End Sub 

У меня возникли некоторые проблемы. Basicaly У меня есть streamreader, открывающий файл .txt, где каталог хранится в 'strUsersPath'. Я пытаюсь получить код так, чтобы, если файл пуст, он делает одно, а если файл не пуст (есть пользователь), то он делает другое.

Если у меня есть пользователь в моем txt-файле, код дает msgbox («создание нормальной учетной записи»), как и ожидалось, однако, когда у меня нет пользователя, он не дает мне другого msgbox, а я почему-то не получается. Я подозреваю, что это потому, что IsNullOrWhiteSpace не подходит для этого. Любая помощь будет принята с благодарностью

EDIT Это код, который я также пробовал, тот же результат, нажав на кнопку ничего не делает, если уже есть пользователь.

Private Sub btnCreateAccount_Click(sender As Object, e As EventArgs) Handles btnCreateAccount.Click 

     Dim fi As New System.IO.FileInfo(strUsersPath) 
     Using r As StreamReader = New StreamReader(Index.strUsersPath) 
      Dim line As String 
      line = r.ReadLine ' nothing happens after this point 
      Do While (Not line Is Nothing) 
       fi.Refresh() 
       If Not fi.Length.ToString() = 0 Then 
        MsgBox("File is empty, creating master account") ' does not work 
        Exit Do 
       Else 
        MsgBox("Creating normal account") ' works as expected 
       End If 
       line = r.ReadLine 

      Loop 
     End Using 

End Sub 
+0

Проверьте, если ваше приложение может открыть файл – Epsil0neR

+0

@ Epsil0neR Как? – SCGB

+3

Вы можете проверить, не пуст ли файл с '' '' '' '' '' 'FileInfo'', не открывая его. – BartoszKP

ответ

2

Для этого вам не нужен StreamReader. Все, что вам нужно, это File.ReadAllText

If File.ReadAllText(strUsersPath).Length = 0 Then 
    MsgBox("File is empty, creating master account") 
Else 
    MsgBox("Creating normal account") 
End If 
0

Я рекомендую использовать этот метод

If New FileInfo(strUsersPath).Length.Equals(0) Then 
    'File is empty. 
Else 
    'File is not empty. 
End If 
Смежные вопросы