FileStream fs = f.Create;
// Использование объекта FileStream.…
// Закрытие файлового потока.
fs.Close;
}
}
Обратите внимание на то, что метод FileInfo.Create возвращает тип FileStream, который, в свою очередь, предлагает набор синхронных и асинхронных операций записи/чтения для соответствующего файла. Объект FileStream, возвращенный методом FileInfo.Create, обеспечивает полный доступ чтения/записи всем пользователям.
Метод FileInfo.Open
Метод FileInfо.Open можно использовать для того, чтобы открывать существующие файлы и создавать новые с более точными характеристиками, чем при использовании FileInfo.Create. В результате вызова Open возвращается объект FileStream. Рассмотрите следующий пример.
static void Main(string[] args) {
…
// Создание нового файла с помощью FileInfo.Open.
FileInfo f2 = new FileInfo(@"C:\Test2.dat");
FileStream fs2 = f2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
// Использование объекта FileStream.…
// Закрытие файлового потока.
fs2.Close;
}
Эта версия перегруженного метода Open требует указания трех параметров. Первый параметр задает общий вид запроса ввода-вывода (создание нового файла, открытие существующего файла, добавление данных в файл и т.п.) с помощью перечня FileMode.
public enum FileMode {
// Дает операционной системе указание создать новый файл.
// Если файл уже существует, генерируется System.IO.IOException.
CreateNew,
// Дает операционной системе указание создать новый файл,
// Если файл уже существует, он будет переписан.
Create,
Open,
// Дает операционной системе указание открыть файл,
// если он существует, иначе следует создать новый файл.
OpenOrCreate,
Truncate,
Append
}
Второй параметр, значение из перечня FileAccess, используется для определения характеристик чтения/записи в соответствующем потоке.
public enum FileAccess {
Read,
Write,
ReadWrite
}
Наконец, третий параметр, FileShare, указывает возможности совместного использования файла другими дескрипторами файла. Вот как выглядит соответствующий перечень.
public enum FileShare {
None,
Read,
Write,
ReadWrite
}
Методы FileInfo.OpenRead и FileInfo.OpenWrite
Хотя метод FileInfo.Open и обладает очень гибкими возможностями получения дескриптора файла, класс FileInfo также предлагает члены с именами OpenRead и OpenWrite. Как вы можете догадаться, эти методы возвращают должным образом сконфигурированный только для чтения или только для записи тип FileStream, без необходимости указания соответствующих значений перечней.
Подобно FileInfo.Create и FileInfo.Open, методы OpenRead и OpenWrite возвращают объект FileStream.
static void Main(string[] args) {
…
// Получение объекта FileStream с доступом только для чтения.
FileInfo f3 = new FileInfo(@"C:\Test3.dat");
FileStream readOnlyStream = f3.OpenRead;
// Использование объекта FileStream…
readOnlyStream.Close;
// Получение объекта FileStream с доступом только для записи.
FileInfо f4 = new FileInfo(@"C:\Test4.dat");
FileStream writeOnlyStream = f4.OpenWrite;
// Использование объекта FileStream…
writeOnlyStream.Close;
}
Метод FileInfo.OpenText
Другим членом типа FileInfo, связанным с открытием файлов, является OpenText. В отличие от Create, Open, OpenRead и OpenWrite, метод OpenText возвращает экземпляр типа StreamReader, а не типа FileStream.
static void Main(string[] args) {
…
// Получение объекта StreamReader.
FileInfo f5 = new FileInfо(@"C:\boot.ini");
StreamReader sreader = f5.OpenText;
// Использование объекта StreamReader.…