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

       

Изменение содержимого текстового файла


Если вы хотите как-то изменить содержимое текстового файла на диске, то вам придется делать это в 3 приема:

  • полностью загрузить информацию из файла в память
  • изменить информацию в памяти, как вам надо
  • то, что получилось, целиком записать обратно в файл.
  • Задача 7: Текстовый файл Оружие.txt состоит из пары десятков названий оружия, применяемого в игре:

    Меч

    Винтовка

    Лазерный пистолет

    Бластер

    и так далее.

    Игру модифицировали – бластер заменили скорчером. Требуется сделать эту замену и в файле.

    Решение: Вот программа:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            'Подготавливаем массив строк для хранения информации из  файла:



            Dim Оружие(50) As String                            'Размер берем с запасом

            'СЧИТЫВАЕМ ИНФОРМАЦИЮ ИЗ ФАЙЛА:

            Dim Чтение As New System.IO.StreamReader("D:\Dinamo\Оружие.txt")

            Dim i As Integer = 1                                      'Счетчик строк  файла

            'Считываем все строки  файла:

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

                Оружие(i) = Чтение.ReadLine

                i = i + 1

            Loop

            Чтение.Close()                                             'Закрываем файл

            'ОБРАБАТЫВАЕМ ИНФОРМАЦИЮ В ОПЕРАТИВНОЙ ПАМЯТИ:

            Dim Число_строк_в_файле As Integer = i - 1

            For i = 1 To Число_строк_в_файле

                If Оружие(i) = "Бластер" Then Оружие(i) = "Скорчер"

            Next

            'ЗАПОЛНЯЕМ ФАЙЛ ОБРАБОТАННОЙ ИНФОРМАЦИЕЙ:

            Dim Запись As New System.IO.StreamWriter("D:\Dinamo\Оружие.txt")

            For i = 1 To Число_строк_в_файле

                Запись.WriteLine(Оружие(i))

            Next

            Запись.Close()                                              'Закрываем файл

    End Sub

    Заполнение файла вручную: Текстовый файл вы можете заполнять вручную. Для этого выйдите из VS в Windows, создайте текстовый файл (выполнив в нужной папке Файл ® Создать ® Текстовый документ) и дайте ему нужное имя. Чтобы заглянуть в него, щелкните по нему дважды мышкой, он откроется программой Notepad (Блокнот). Теперь вы можете заполнять его текстом, вводя его с клавиатуры. Только имейте в виду, что если вы заполняете его русскими буквами (кириллицей), объект StreamReader может его и не прочесть. В этом случае для чтения из VB используйте конструктор этого объекта с двумя параметрами:


    Dim Чтение As New IO.StreamReader("D:\Dinamo\Оружие.txt", System.Text.ASCIIEncoding.GetEncoding(1251))

    Здесь 1251 – номер так называемой кодовой страницы, содержащей буквы кириллицы. Остальное – без пояснений.

    Задание 11.          

    В мэрии нашего городка хранится файл со списком всех его жителей. Данные в нем расположены в следующем порядке:

    Кривоклыков Леонид Львович

    21.10.1959  00:00:00

    Дерпт Клотильда Генриховна

    14.02.1936  00:00:00

    Похожий Семен Семенович

    30.12.1940  00:00:00

    И так далее. После строки с фамилией, именем и отчеством горожанина идет строка с датой его рождения. Раз в неделю файл обновляется. В эту неделю из города уехали двое:

    Янзаев Федор Карпович

    Кропоткин Владлен Фотиевич

    Еще один –

    Страшный Гектор Васильевич

    поменял фамилию на «Благодатный».

    Других изменений не было. Требуется обновить файл. Также необходимо распечатать на предмет поздравления всех тех, у кого в последнюю неделю был день рождения.

    Задание 12.          

    Те, кому понравилась эта задача, могут сделать реальную систему в помощь мэрии или, хотя бы, школьному библиотекарю. Поместите на форму список типа ListBox. Создайте код, который заполняет его из файла фамилиями (или, скажем, названиями книжек). При выборе элемента списка полные данные об этом элементе (дата рождения, пол или, скажем, число страниц, автор) появляются в нескольких текстовых полях. Имеется несколько кнопок: «Исправить», «Удалить», «Обновить файл» и т.п. Обязательным в этом задании я считаю только заполнение списка из файла. Остальное можете отложить на потом.


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