Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
файлы лекция (основная).pdf
Скачиваний:
31
Добавлен:
15.04.2015
Размер:
938.85 Кб
Скачать

Лекция

Работа с файлами в C#

Содержание

 

1 Файлы и потоки..........................................................................................................................

3

2 Потоки данных и классы...........................................................................................................

3

2.1

Стандартные потоки..........................................................................................................

3

2.2

Базовые классы для работы с файлами и потоками........................................................

4

2.2.1 Основные классы ввода и вывода.............................................................................

4

2.2.2 Классы на базе FileSystemInfo...................................................................................

4

2.2.3 Классы для работы с потоками.................................................................................

5

2.2.4 Классы для работы с потоками текстовых символов..............................................

6

2.3

Перечисления......................................................................................................................

7

3 Работа со стандартными потоками..........................................................................................

7

3.1

Стандартный поток ввода..................................................................................................

7

3.2

Стандартный поток вывода...............................................................................................

7

3.2.1 Стандартный поток вывода сообщений об ошибках..............................................

8

3.3

Программа StdStreams.......................................................................................................

9

4 Создание потоков, связанных с файлами..............................................................................

10

4.1

Открытие потока FileStream............................................................................................

10

4.2

Открытие потоков BinaryWriter и BinaryReader............................................................

12

4.3

Закрытие потоков.............................................................................................................

12

4.4

Запись двоичных данных................................................................................................

12

4.5

Чтение двоичных данных................................................................................................

13

4.6

Программа Binary.............................................................................................................

14

4.7

Работа с текстовыми файлами........................................................................................

16

5 Выбор кодировки символов....................................................................................................

18

5.1

Кодовые страницы............................................................................................................

19

5.2

Недостатки модели кодовых страниц.............................................................................

21

5.3

Стандарт UNICODE.........................................................................................................

21

5.3.1 Unicode в Microsoft Windows NT/2000/XP.............................................................

22

5.3.2 UNICODE в Microsoft Windows 95.........................................................................

22

5.4

Кодировка текстовых потоков.........................................................................................

22

5.5

Кодировка текстовых строк в двоичных потоках..........................................................

25

6 Буферизация потоков...............................................................................................................

27

6.1

Буферизация двоичных потоков.....................................................................................

27

6.2

Буферизация текстовых потоков.....................................................................................

28

6.3

Принудительный сброс буферов.....................................................................................

29

7 Потоки в оперативной памяти................................................................................................

30

7.1

Создание потока...............................................................................................................

30

7.2

Чтение данных..................................................................................................................

31

7.3

Запись данных..................................................................................................................

32

7.4

Доступ к буферу потока MemoryStream.........................................................................

34

7.5

Потоки на базе строк string.............................................................................................

35

7.6

Потоки класса StringBuilder............................................................................................

37

1 Файлы и потоки

Большинство программ так или иначе работают с каталогами и файлами. Средства для работы с файлами предусмотрены практически в любом языке программирования. Эти средства могут быть встроены непосредственно в язык, а также входить в стандартные библиотеки функций и классов, поставляющихся вместе с компилятором.

Программы, составленные на языке С#, работают с каталогами и файлами при помощи специально предназначенных для этого классов, входящих в состав библиотеки классов Microsoft .NET Framework.

2 Потоки данных и классы

Все операции с файлами выполняются в программах С# с помощью так называемых потоков данных (data stream).

Программы могут выполнять над потоками данных 3 операции:

запись данных в поток,

чтение данных из потока,

позиционирование.

Для потоков, связанных с файлами, определено также такое понятие, как текущая позиция внутри файла.

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

Программа С# может работать с потоками нескольких типов:

стандартными потоками ввода и вывода,

потоками, связанными с локальными файлами,

потоками, связанными с файлами в оперативной памяти.

Рассмотрим кратко классы библиотеки Microsoft .NET Framework, связанные с потоками перечисленных выше типов.

2.1 Стандартные потоки

Стандартные потоки обычно связаны с консолью и клавиатурой, но могут быть перенаправлены в файлы средствами ОС. По своему назначению эти потоки больше всего напоминают стандартные потоки ввода и вывода, а также стандартный поток вывода сообщений об ошибках ОС MS-DOS.

Практически все программы, исходные тексты которых приводились в нашей книге, работают со стандартными потоками ввода и вывода. Для вывода данных в стандартный поток вывода мы применяли методы System.Console.Write и System.Console.WriteLine. Ввод данных из стандартного потока выполнялся с помощью метода System.Console.ReadLine.