Unetway

C # - Ввод/вывод файлов

Файл представляет собой набор данных , хранящиеся в диске с определенным именем и путем к каталогу. Когда файл открывается для чтения или записи, он становится потоком .

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

Классы ввода и вывода C #

Пространство имен System.IO имеет различные классы, которые используются для выполнения многочисленных операций с файлами, таких как создание и удаление файлов, чтение или запись в файл, закрытие файла и т. д.

В следующей таблице приведены некоторые часто используемые не абстрактные классы в пространстве имен System.IO:

BinaryReader

Читает примитивные данные из двоичного потока.

BinaryWriter

Записывает примитивные данные в двоичном формате.

BufferedStream

Временное хранилище для потока байтов.

Directory

Помогает в управлении структурой каталогов.

DirectoryInfo

Используется для выполнения операций с каталогами.

DriveInfo

Предоставляет информацию для дисков.

File

Помогает манипулировать файлами.

FileInfo

Используется для выполнения операций с файлами.

FileStream

Используется для чтения и записи в любое место в файле.

MemoryStream

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

Path

Выполняет операции над информацией о пути.

StreamReader

Используется для чтения символов из потока байтов.

StreamWriter

Используется для записи символов в поток.

StringReader

Используется для чтения из строкового буфера.

StringWriter

Используется для записи в строковый буфер.

Класс FileStream

Класс FileStream в пространстве имен System.IO помогает при чтении, записи и закрытии файлов. Этот класс проистекает из абстрактного класса Stream.

Вам необходимо создать объект FileStream для создания нового файла или открытия существующего файла. Синтаксис для создания объекта FileStream выглядит следующим образом:

FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>,
   <FileAccess Enumerator>, <FileShare Enumerator>);

Например, мы создаем объект FileStream F для чтения файла с именем sample.txt, как показано -

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read,
   FileShare.Read);

FileMode

FileMode Перечислитель определяет различные методы для открытия файлов. Элементами перечисления FileMode являются:

  • Append - открывает существующий файл и помещает курсор в конец файла или создает файл, если файл не существует.
  • Create - создает новый файл.
  • CreateNew - указывает операционной системе, что он должен создать новый файл.
  • Открыть - открывает существующий файл.
  • OpenOrCreate - указывает операционной системе, что он должен открыть файл, если он существует, иначе он должен создать новый файл.
  • Truncate - открывает существующий файл и обрезает его размер до нуля байтов.

FileAccess

У перечислений FileAccess есть члены: Read , ReadWrite и Write .

FileShare

У перечислений FileShare есть следующие члены:

  • Inheritable - позволяет дескриптору файла передавать наследование дочерним процессам
  • None. Он отклоняет общий доступ к текущему файлу.
  • Read - позволяет открыть файл для чтения.
  • ReadWrite - позволяет открывать файл для чтения и записи
  • Write - позволяет открыть файл для записи
using System;
using System.IO;

namespace FileIOApplication {
   class Program {
      static void Main(string[] args) {
         FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, 
            FileAccess.ReadWrite);
         
         for (int i = 1; i <= 20; i++) {
            F.WriteByte((byte)i);
         }
         F.Position = 0;
         for (int i = 0; i <= 20; i++) {
            Console.Write(F.ReadByte() + " ");
         }
         F.Close();
         Console.ReadKey();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

Расширенные операции с файлами в C #

Предыдущий пример обеспечивает простые операции с файлами в C #. Однако, чтобы использовать огромные возможности классов C # System.IO, вам необходимо знать широко используемые свойства и методы этих классов.

Чтение и запись в текстовые файлы

Это включает в себя чтение и запись в текстовые файлы. Класс StreamReader и StreamWriter помогает выполнить его.

Чтение и запись в двоичные файлы

Он включает чтение и запись в двоичные файлы. Класс BinaryReader и BinaryWriter помогает выполнить это.

Управление файловой системой Windows

Он дает программисту C # возможность просматривать и находить файлы и каталоги Windows.