С#
ТЕМА 2. Структурированные типы данных
Общие принципы работы с файлами
Общие принципы работы с файлами
Классы .NET для работы с потоками
Уровни обмена с внешними устройствами
Доступ к файлам
Символьные потоки. Класс StreamWriter
Символьные потоки. Метод WriteLine класса StreamWriter
Символьные потоки. Класс StreamReader
Символьные потоки. Метод ReadLine класса StreamReader. Конец файла
Метод Close()
Пример 1
Пример 1
Пример 1
Пример 2
Пример 2
Пример 2
Пример 3
Пример 3
Пример 3
Задания (из учебника по Паскалю)
972.00K
Категория: ПрограммированиеПрограммирование

C#. Структурированные типы данных. Текстовые файлы

1. С#

1

2. ТЕМА 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 для работы с потоками

object
DirectoryInfo
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

14

15. Пример 1

15

16. Пример 2

16

17. Пример 2

Файлы 1.txt, 2.txt автоматически будет помещаться в
ту папку, в которой расположен exe-файл.
17

18. Пример 2

18

19. Пример 3

С помощью программы Блокнот создать текстовый файл 1.txt,
содержащий русский текст.
Написать приложение, которое из файла 1.txt будет
переписывать в файл 2.txt только те строки, длина которых
больше 11. При переписывании, в начало строки вставить ее
длину, а ASCII – код каждого символа увеличить на 1.
19

20. Пример 3

Так как файл 1.txt создан в Блокноте в
кодировке Windows-1251 и в нем есть русские
буквы, то используем другой вид конструктора
для создания входного потока. При считывании
будет выполнятся перевод из кодировки
Windows-1251 в кодировку Юникода.
20

21. Пример 3

21

22. Задания (из учебника по Паскалю)

1) № 4.9
Написать программу1, создающую
файл 1.txt, содержащий значения х.
Написать программу2, вычисляющую
значения y и выводящую эти значения
в файл 2.txt в виде таблицы (как в
примере).
2) №10.2(2)
22
English     Русский Правила