2013-09-27 3 views
0

Это мой код, и я хочу прочитать мой файл TestFile.txt и отобразить его в txt2.Text, но этот код не читает мой txt-файл. кто-нибудь может помочь мне решить эту проблему? БлагодаряПочему мой StringReader не читает мой txt-файл в vb.net?

Dim MyFileName As String = "C:\Users\TestFile.txt" 
Dim Line As String = "" 
Dim sb As New StringBuilder 
Using sr As New StringReader(MyFileName) 
Line = sr.ReadLine 
    Do      
     If Line = "*" Then 
     Line = sr.ReadLine 
     Do        
      sb.Append(LineRead)   
      Line = sr.ReadLine 
     Loop Until Line = "**"  
    End If 
     Line = sr.ReadLine   
Loop Until Line = ""    
End Using 
Line = txt2.Text 

ответ

1

Вы не присоединяют Line к StringBuilder, но LineRead, который не установлен в вашем коде.

Ваш код должен прочитать:

Line = sr.ReadLine 
Do        
    sb.Append(Line)   
    Line = sr.ReadLine 
Loop Until Line = "**" 

В комментариях я посоветовал удалить следующий фрагмент из моего ответа:

Реальная проблема языки программирования, которые донских 't заставлять вас объявлять переменные, прежде чем вы сможете их использовать. Вы должны любить VB.NET ...

Я хотел бы процитировать MSDN здесь:

По умолчанию Visual Basic .NET или Visual Basic компилятор навязывает явное объявление переменных, которая требует что вы объявляете каждую переменную перед ее использованием. Чтобы изменить это поведение по умолчанию, см. Раздел «Изменение значения проекта по умолчанию».

Таким образом, в то время как по умолчанию комментатор права, вы можете изменить поведение, и ничего в этом вопросе не говорит мне, что ОП не изменил его. Тем не менее, я буду уточнять свое утверждение, если быть более точным:

Настоящая проблема - языки программирования, которые позволяют вам превратить необходимость объявления переменных, прежде чем вы сможете их использовать. Вы должны любить VB.NET ...

+0

«Настоящая проблема - языки программирования, которые не заставляют вас объявлять переменные» -> VB.NET (даже с Option String Off) заставляет вас объявлять переменные. Если «LineRead» не объявлен где-то, код OP не будет компилироваться. Пожалуйста, исправьте этот бит. То, что VB.NET позволяет (что C# не делает), не является экземпляром переменных (из-за принятия значения по умолчанию); например, этого было бы достаточно с записью: 'Dim lineRead As String' (и VB.NET предположил бы, что' lineRead' - 'Nothing'). – varocarbas

+0

(Я думаю, что я - комментатор). Я никогда не видел, чтобы кто-нибудь использовал «Option Explicit Off», но вы правы: опция существует. Причиной моего комментария было подчеркнуть, что ваше первоначальное заявление было более общим критиком, не имеющим (истинной/практической) мотивации, чем точной догадки. «Написание» - это «Опция Explicit Off», написанная сверху »в качестве побочного комментария/PS (просто для того, чтобы полностью убедиться) звучит гораздо более адекватно, чем с самого начала, что« LineRead »не был объявлен и что это обычный VB поведение. «Реальная проблема заключается в использовании« Option Explicit Off »...» звучит также более точно. – varocarbas

+0

Вы правы в этом. Я просто не хотел отказываться от своего Visual Basic Rant :-) –

1

StringReader просто позволяет вам читать из строки, она не читает и не открывает файл.

Используйте StreamReader для чтения из файла.

Dim filename As String = "C:\Users\TestFile.txt" 
    Dim Line As String = "" 
    Dim sb As New StringBuilder 
    Using sr As StreamReader = File.OpenText(filename) 
    Line = sr.ReadLine 
    Do      
     If Line = "*" Then 
     Line = sr.ReadLine 
     Do        
      sb.Append(Line) ' you probably meant Line, not LineRead  
      Line = sr.ReadLine 
     Loop Until Line = "**"  
    End If 
     Line = sr.ReadLine   
    Loop Until Line = "" 
    End Using 
+0

, затем где отобразить мой прочитанный текст? – Husna5207

+0

ok2 большое спасибо. хорошего дня :) – Husna5207

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