ПОНЯТНО О Visual Basic NET (том 3)

       

Чтение из незнакомого текстового файла


Задача 4: В задаче 2 мы еще до считывания знали, как располагаются по строкам данные в файле Filimon.txt. Однако, нередки случаи, когда мы не имеем об этом представления. Все, что мы знаем, это то, что файл текстовый и состоит из строк. Тем не менее, данные из файла прочитать хочется, чтобы хотя бы посмотреть на них. Для этого можно приказать Бейсику загружать каждую строку файла, независимо от того, из каких данных она состоит, в переменную типа String. Вот программа, распечатывающая три первые строки файла Fil.txt:

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        Dim Чтение As New System.IO.StreamReader("E:\VB\Fil.txt")

        Dim s1 As String = Чтение.ReadLine                       :     Debug.WriteLine(s1)

        Dim s2 As String = Чтение.ReadLine                       :     Debug.WriteLine(s2)

        Dim s3 As String = Чтение.ReadLine                       :     Debug.WriteLine(s3)

        Чтение.Close()

End Sub

Задача 5: В считываемом файле ровно 800 строк. Требуется их считать и распечатать.

Решение: Ясно, что без цикла здесь не обойтись:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        Dim Чтение As New System.IO.StreamReader("E:\VB\Filimon.txt")

        Dim s As String



        Dim i As Integer

        For i = 1 To 800

            s = Чтение.ReadLine

            Debug.WriteLine(s)

        Next

        Чтение.Close()

End Sub

Задача 6: Вам нужно прочесть все строки файла, а сколько строк в файле вы не знаете.

Решение: В этом случае оператор цикла For не подойдет, так как в нем нужно указывать точное число строк. Хорошо бы компьютеру можно было приказать: «Читай, пока в файле еще есть информация». И такой приказ есть. В его основе лежит метод  Peek (который в данном контексте можно перевести, как «попробуй»). При его выполнении считывающая головка продвигается на 1 символ вперед, считывает его, но не остается там, как при выполнении методов ReadLine и WriteLine, а возвращается назад. Если же считывать было нечего, то есть файл кончился, метод Peek возвращает число -1.

Вот программа:

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

        Dim Чтение As New System.IO.StreamReader("E:\VB\Filimon.txt")

        Dim s As String

        Do While Чтение.Peek() <> -1

            s = Чтение.ReadLine

            Debug.WriteLine(s)

        Loop

        Чтение.Close()

End Sub



Содержание раздела