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




Невидимый символ возврата каретки


Вы, наверное, удивитесь, если я скажу, что на самом деле в текстовом файле никаких строк нет. Вся информация в текстовом файле представляет собой одну непрерывную цепочку символов. А как же тогда работают методы ReadLine и WriteLine, которые имеют дело со строками файла? – спросите вы. Давайте разберемся.

Вернемся к 19.2.2Вот как на самом деле будет выглядеть информация в файле после выполнения четырех операторов Запись.WriteLine:

Азия5,2729.03.2005 21:30:0012

Каждое выполнение метода WriteLine записывает в файл не только положенную информацию, но последним символом в конец ее дописывает некий невидимый для нас управляющий символ, который я условно обозначил . Называется он «Перевод строки и возврат каретки» и название свое берет от тех древних времен, когда не было еще никаких мониторов и компьютер печатал информацию на автоматических пишущих машинках. Часто для краткости этот символ зовут просто «Возврат каретки» или «Перевод строки». В некотором смысле он является не одним, а парой символов: «Перевод строки» и «Возврат каретки», но мы не будем вдаваться в эти подробности. Для нас это – один символ.

Каждое выполнение метода ReadLine считывает информацию из файла до следующего символа возврата каретки, но сам этот символ не считывается. Таким образом, путаницы с методами ReadLine и WriteLine не получается и все идет нормально.

Метод Write, в отличие от метода WriteLine, символ возврата каретки не дописывает.

ReadToEnd. У класса StreamReader имеется удобный метод ReadToEnd, который считывает в единую строку все содержимое файла от текущего положения считывающей головки до конца файла. Символы возврата каретки считываются тоже и входят на своих местах в состав этой строки. Посмотрим, как ведет себя эта странная строка, включающая невидимые символы.

Разместите на форме текстовое поле. Сделайте его многострочным (см. 3.4.2). При условии, что в файле Filimon.txt содержится описанная выше информация, запустите следующую учебную процедуру:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click




Содержание  Назад  Вперед