Файлы и потоки в C#: общая информация


В C# любой файл представляет собой последовательный поток байтов. Конец каждого файла либо имеет маркер конца файла, либо байт с особым номером, который записывается в соответствии со структурой административных данных.

n-байтовый файл по представлению в C#

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

  • Console.Out – возвращается объект потока стандартного вывода; с помощью него информация и появляется на мониторе компьютера.
  • Console.In – возвращает объект потока стандартного ввода; с помощью него имеется возможность вводить информацию с клавиатуры.
  • Console.Error – возвращается объект потока стандартной ошибки; появляется на мониторе информация об ошибках.
Для возможности обработки файлов в C# необходимо подключить пространство имен Sistem.IO. В данном пространстве имен имеются такие классы потоки:

  • FileStream – ввод и вывод в файл; используется абстрактный класс Stream для создания объекта потока для работы с файлом.
  • StreamReader – чтение текста из файла; TextReader соответственно.
  • StreamWriter – запись текста в файл; TextWriter соответсвенно.
По сути дела Console.Out и Console.In – это свойства классов TextWriter и TextReader.

В C# имеется класс BinaryFormatter, с помощью которого можно упорядочить объект Stream(то есть преобразовать его в такой формат, который будучи записан в файл, не теряет никакую информацию) и снять упорядочивание (то есть получить объект из файла путем считывания его формата).

Для работы с потоками в виде байтов (точнее для обеспечения функциональности и представления) есть абстрактный класс System.IO.Stream. Вообще, для операций ввода-вывода в C# имеется немало классов. Информация из файлов может считываться последовательно или выборочно с помощью класса FileStream. Для прямой передачи данных в память и извлечения их применяют MemoryStream: этот класс работает гораздо быстрее остальных, физически пишущих на диск данные. Есть еще BufferStream: с помощью этого класса производится буферизация получения данных из потока и передачи в него. Под буферизацией понимается такой способ ввода-вывода, при котором информация идет в специальный буфер, накапливается там, и только после заполнения буфера начинает производиться физическая передача информации. Это позволяет повысить быстродействие работы с информацией.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, файл




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Создание модульных тестов и концепция AAA
Урок 13. Дочерние задачи C#
Урок 33. Вспомогательная функция JavaScript