Запись в файл
Начнем с рассмотрения команды, часто встречающейся при работе с файловыми потоками:
Dim myFileStream As New FileStream("MyFile.txt". FileMode.OpenOrCreate, FileAccess.Write)
Как видно из приведенного фрагмента, эта версия конструктора FileStream получает имя файла (заданное по отношению к текущему каталогу, если не указано полное имя) и два параметра, значения которых относятся к перечисляемым типам FileMode и FileAccess соответственно. Таким образом, в нашем примере конструктор FileStream либо создает файл с именем MyFile.txt в текущем каталоге, либо открывает его, если файл с таким именем уже существует. В любом случае программа сможет записывать данные в файл.
Часто встречаются и другие конструкторы класса FileStream:
- Sub New(String, FileMode): создает объект FileStream с заданным именем и в заданном режиме (см. ниже описание FileMode).
- Sub New(String, FileMode, FileAccess): создает объект FileStream в заданном режиме, с заданными правами чтения/записи и совместного доступа.
Допустимыми значениями перечисляемого типа FileAccesS являются Read, Write и ReadWrite. Основные значения перечисляемого типа FiIeMode перечислены в табл. 9.9. Учтите, что некоторые из них требуют особых привилегий для операций с файлами.
Таблица 9.9. Значения перечисляемого типа FileMode.
Значение | Описание |
---|---|
Append | Открыть существующий файл (или создать несуществующий). Указатель текущей позиции перемещается в конец файла для записи. Используется совместно с FileAccess.Write |
Create | Создать новый файл. Внимание – существующий файл автоматически стирается! |
CreateNew | Создать новый файл. Отличается от Create тем, что для существующего файла инициируется исключение IOException |
Open | Открыть существующий файл. Если файл не существует, инициируется исключение IOException. Используется совместно с FileIOPermissionAccess.Read |
OpenOrCreate | Открыть или создать файл |
Truncate | Открыть существующий файл, удалить текущее содержимое |
Примечание
Объекты FHeStream также возвращаются следующими методами классов File и FHelnfo: File.Create, File.Open, File.OpenRead, File.OpenWrite, FHeInfo.Create, FHelnfo.Open, FHelnfo.OpenRead.
Хотя файловые потоки поддерживают произвольный доступ методом Seek, базовый класс – FileStream ориентирован исключительно на операции с байтами, поэтому его возможности ограничиваются простой записью байта или массива байтов методами WriteByte и Write.