Similar presentations:
Структурированные типы данных
1. С#
12. ТЕМА 2. Структурированные типы данных
Задание 6. «Текстовые файлы»:1.
Потоки. Виды потоков.
2.
Символьные потоки.
3.
Класс StreamWriter. Создание объекта.
4.
Класс StreamWriter метод WriteLine.
5.
Класс StreamReader. Создание объекта.
6.
Класс StreamReader метод ReadLine.
7.
Метод Close.
2
3. Общие принципы работы с файлами
Передача данных с внешнего устройства воперативную память называется чтением
(вводом), обратный процесс — записью
(выводом).
Ввод-вывод в C# выполняется с помощью
подсистемы ввода-вывода и классов
библиотеки .NET. Для работы с классами
этого пространства имен его нужно
обязательно подключить командой:
using System.IO;
Обмен данными реализуется с помощью
потоков.
3
4. Общие принципы работы с файлами
Поток это абстракция, которая принимает ипередает данные. С помощью потока можно
читать данные из различных источников
(клавиатура, файл) и записывать в
различные источники (принтер, экран,
файл). Характер поведения всех потоков
одинаков. Поэтому классы и методы
ввода/вывода можно применять к любым
устройствам.
Обмен с потоком для повышения скорости
передачи данных производится, как правило,
через буфер. Буфер выделяется для каждого
открытого файла.
4
5. Классы .NET для работы с потоками
objectDirectoryInfo
MarshalBy Ref Object
FileSystemInfo
FileInfo
Stream
BufferedStream
BinaryReader
BinaryWriter
FileStream
MemoryStream
Directory
TextReader
StreamReader
File
StringReader
TextWriter
StreamWriter
StringWriter
5
6. Уровни обмена с внешними устройствами
Выполнять обмен с внешними устройствамиможно на уровне:
двоичного представления данных
(BinaryReader, BinaryWriter);
байтов
(FileStream);
текста, то есть символов
(StreamWriter, StreamReader).
6
7. Доступ к файлам
Доступ к файлам может быть последовательным,когда очередной элемент можно прочитать
(записать) только после аналогичной операции с
предыдущим элементом, и прямым, при котором
выполняется чтение (запись) произвольного
элемента по заданному адресу.
Текстовые файлы позволяют выполнять только
последовательный доступ, в двоичных и
байтовых потоках можно использовать оба
метода.
Прямой доступ в сочетании с отсутствием
преобразований обеспечивает высокую скорость
получения нужной информации.
7
8. Символьные потоки. Класс StreamWriter
Класс StreamWriter предназначен для организациивыходного символьного потока. Этот класс
содержит несколько конструкторов.
Так, например, создать экземпляр этого класса
можно так:
StreamWriter f = new StreamWriter("c:\temp\t.txt");
Или, для добавления в конец:
StreamWriter f=new StreamWriter("t.txt", true);
Или, для перезаписи
StreamWriter f=new StreamWriter("t.txt", false);
8
9. Символьные потоки. Метод WriteLine класса StreamWriter
Теперь, для записи данных в поток f ,можно обратиться к методу WriteLine. Это
можно сделать так:
f.WriteLine("test");
В этом случае в файл будет записано (или
дописано) слово test.
9
10. Символьные потоки. Класс StreamReader
Класс StreamReader предназначен для организациивходного символьного потока.
Так, например, создать экземпляр этого класса можно
так:
StreamReader f = new StreamReader ("c:\temp\t.txt");
В C# символы реализуются кодировкой Unicode. Для
того, чтобы можно было обрабатывать русские буквы в
файле созданном, например, в Блокноте, рекомендуется
следующий конструктор:
StreamReader f = new StreamReader ("c:\temp\t.txt" ,
Encoding.GetEncoding(1251));
Второй параметр говорит о том, что будет выполнено
преобразование из кода Windows-1251 в Unicode.
10
11. Символьные потоки. Метод ReadLine класса StreamReader. Конец файла
Теперь, для чтения данных из потока f ,можно обратиться к методу ReadLine . Это
можно сделать так:
string s=f. ReadLine ();
В этом случае из файла будет прочитана
строка и значение этой строки будет
присвоено переменной s.
Если при чтении будет достигнут конец
файла, то метод ReadLine вернет значение
null.
11
12. Метод Close()
По завершении работы с файлом его необходимозакрыть методом Close().
12
13. Пример 1
Написать приложение, которое записывает в файл1.txt значения 8 точек из интервала [-2; 2].
13
14. Пример 1
1415. Пример 1
1516. Пример 2
1617. Пример 2
Файлы 1.txt, 2.txt автоматически будет помещаться вту папку, в которой расположен exe-файл.
17
18. Пример 2
1819. Пример 3
С помощью программы Блокнот создать текстовый файл 1.txt,содержащий русский текст.
Написать приложение, которое из файла 1.txt будет
переписывать в файл 2.txt только те строки, длина которых
больше 11. При переписывании, в начало строки вставить ее
длину, а ASCII – код каждого символа увеличить на 1.
19
20. Пример 3
Так как файл 1.txt создан в Блокноте вкодировке Windows-1251 и в нем есть русские
буквы, то используем другой вид конструктора
для создания входного потока. При считывании
будет выполнятся перевод из кодировки
Windows-1251 в кодировку Юникода.
20
21. Пример 3
2122. Задания (из учебника по Паскалю)
1) № 4.9Написать программу1, создающую
файл 1.txt, содержащий значения х.
Написать программу2, вычисляющую
значения y и выводящую эти значения
в файл 2.txt в виде таблицы (как в
примере).
2) №10.2(2)
22