2016-01-16 1 views
0

я с трудом выяснить, почему до этого код моего дает мне необработанную ошибку исключения, когда на самом деле это, если заявление ..Проверьте, если файл существует перед подсчетом длиной строки в текстовом файле

 If (Not System.IO.File.Exists("C:\file.txt") And System.IO.File.ReadAllText("C:\file.txt").Length <> "20") Then 
      MessageBox.Show("Code executed!") 
     Else 
      MessageBox.Show("Failed to execute!") 
     End If 

Не могли бы вы рассказать мне, что я пропустил?

+0

Вы выполняете как 'File.Exists' и' ReadAllText' во всех случаях (в том числе, когда '' File.Exists' возвращает false'. Вы должны использовать 'AndAlso' вместо' And'. Это будет гарантировать, что второй тест не будет выполнен, если первый из них «False». – Blackwood

+0

Я удивлен .Length <> «20» компилируется. Не должно быть .Length <> 20? –

+0

@ScottHutchinson Я думаю, потому что потому, что .Length возвращает строку, поэтому вам нужно добавить котировки .... Однако, если она возвращает целое число, тогда вам не нужно добавлять котировки ... –

ответ

0

Лучше сломать код, как показано ниже, что упрощает обнаружение и отладку. Лучше написать несколько лишних строк, так что случиться здесь не происходит вообще.

Dim fileName As String = "C:\file.txt" 
Dim FileText As String = "" 

If IO.File.Exists(fileName) Then 
    FileText = IO.File.ReadAllText(fileName) 
    If FileText.Length <> 20 Then 
     MessageBox.Show("Code executed!") 
    Else 
     ' recover 
    End If 
Else 
    MessageBox.Show("Failed to execute!") 
End If