Текстовые файлы для просмотра редактором Файлы с последовательным доступом

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002158.docx

Текстовые файлы для просмотра редактором

Файлы с последовательным доступом

 

       Для просмотра файла текстовым редактором.

       Без последующей разборки записей на данные.

       Самое дружественное представление информации на экране.

 

Примечание. Записи не структурированы, поэтому не предполагается их разбор на переменные. Каждая запись – это одна переменная типа string.

 

Форматирование:

Метод Format() для каждой записи, то есть одна запись – это одна строка. В записи, кроме переменных, предполагается наличие связую- щих слов.

 

str = Format("Это {0}-ая строка", i);

 

Вывод в файл:

Способ 1. В цикле методом WriteLine класса StreamWriter:

 

sw. WriteLine ("Группа 171-1");

sw. WriteLine (Format("Студент {0}, курс {1}", fio, kurs) );

 

Способ 2. Накапливать строки в массиве строк и выводить их одним вызовом статического метода WriteAllLines класса File:

 

string[ ] text = { "Hello", "And", "Welcome" }; File.WriteAllLines (@"c:\temp\Text.txt", text );


Проблема: не всегда при создании массива строк изначально извес- тен его размер.

 

Чтение:

только последовательное методом ReadLine в цикле или методом ReadAllLines за один вызов без последующей разборки записи на дан- ные.

Достоинство метода WriteAllLines: размерность массива строк уста- навливается методом.

 

Найти требуемую строку можно методами класса String, например, StartsWith.

 

Загрузка в базу данных:

не предполагается, так как все строки разные.

 

       Для просмотра файла текстовым редактором.

       Для редактирования файла вручную из текстового редактора.

       Для загрузки файла в программу и разбиения записей на состав- ляющие данные.

 

1.   Выводимые данные могут содержать внутри себя произвольное количество пробелов (разделителей).

 

Примечание. Объединить все данные в одну строку можно, но из-за наличия неконтролирумых пробелов разобрать такую запись после ее чтения из файла на данные не представляется возможным (если исполь- зовать пробел как разделитель).

Поэтому предлагается способ вывода каждой переменной в виде от- дельной строки.

 

Форматирование:

Каждая нестроковая переменная преобразуется в строку методом ToString. В каждой записи в строго фиксированном месте могут присут- ствовать связующие слова.

 

int   kurs ;

str = ToString(kurs) ;

 

Вывод в файл:

Способ 1. Каждая переменная выводится в виде отдельной строки ме- тодом WriteLine() класса StreamWriter:

 

sw. WriteLine (fio);

sw. WriteLine (kurs.ToString());

 

Способ 2. Все выводимые строки накапливаются в массиве строк и этот массив выводится одним вызовом статического метода WriteAllLines класса File:


 

 

ных ных


string[ ] text = new string[200] ;

text[0] = fio; text[1] = kurs.ToString();    // и т.д. для всех перемен-

 

. . .         // и т.д. для всех записей

text[i] = fio; text[i+1] = kurs.ToString(); // и т.д. для всех перемен-

 

File.WriteAllLines ("Text.txt", Text );


 

Проблема: не всегда при создании массива строк известен его раз- мер. Следует использовать класс ArrayList.

 

Чтение:

только последовательное методом ReadLine в цикле или методом

ReadAllLines за один вызов.

 

Загрузка в базу данных:

Каждая прочитанная строка (т.е. переменная) преобразуется в ис- ходный тип:

kurs = int.Parse ( text );          // после ReadLine

-или-

kurs = int.Parse ( text[i] );       // после ReadAllLines

 

Связующие слова пропускаются

 

2.  Выводимые данные не содержат внутри себя пробелов (разделите- лей) или содержат их фиксированное количество.

Примечание. Можно объединить все данные в одну строку, отделяя их друг от друга пробелом (разделителями). Разобрать такую запись по- сле ее чтения из файла на данные можно методом Split класса String.

 

Форматирование:

Формируется одна строка на запись, состоящая из данных, преобра- зованных в подстроки методами Format() и/или ToString.

Данные друг от друга должны отделяться одним или несколькими пробелами (уникальными разделителями), на которые при разборке бу- дет реагировать метод Split.

В записях, кроме переменных, могут находиться связующие слова, которые при разборке строки пропускаются.

 

str = Format ("Запись-1 " + fio + " " + kurs);

-или-

str = "Запись-1 " + fio + " " + ToString (kurs);

 

Вывод в файл:

Способ 1. Методом WriteLine класса StreamWriter: sw. WriteLine (str);


Способ 2. Накапливать строки в массиве строк и выводить их одним вызовом статического метода WriteAllLines класса File:

 

string[ ] text ;

. . .

File.WriteAllLines (@"c:\temp\Text.txt", text );

 

Чтение:

только последовательное методом ReadLine в цикле или методом

ReadAllLines за один вызов.

 

Загрузка в базу данных:

Каждая прочитанная строка разбивается на массив подстрок, каждая из которых потом преобразуется с помощью метода Parse:

 

char [ ]    delimiter = { ', ' }; // запятая и пробел - разделители

string      record = "Иванов, курс 2"; string [ ] data = null;

 

data = record.Split (delimiter);           // data[0] – fio, data[2] – kurs fio = data[0] ;        kurs = int.Parse (data[2]);

 

Связующие слова пропускаются примере - data[1]).