Чтение онлайн

ЖАНРЫ

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

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.…

 sreader.Close;

}

Чуть позже вы увидите, что тип StreamReader обеспечивает возможность чтения символьных данных из соответствующего файла.

Методы FileInfo.CreateText и FileInfo.AppendText

И последними интересующими нас на этот момент методами будут CreateText и AppendText, которые возвращают ссылку на StreamWriter, как показано ниже.

static void Main(string[] args) {

 …

 FileInfo f6 = new FileInfo(@"C:\Test5.txt");

 StreamWriter swriter = f6.CreateText;

 // Использование объекта StreamWriter….

 swriter.Close;

 FileInfo f7 = new FileInfo(@"C:\FinalTest.txt");

 StreamWriter swriterAppend = f7.AppendText;

 // Использование объекта StreamWriter…

 swriterAppend.Close;

}

Вы должны догадаться сами, что тип StreamWriter предлагает способ записи символьных данных в соответствующий файл.

Работа с типом File

Тип File предлагает функциональные возможности, почти идентичные возможностям типа FileInfo, но с помощью ряда статических членов. Подобно FileInfo, тип File предлагает методы AppendText, Create, CreateText, Open, OpenRead, OpenWrite и OpenText. Во многих случаях типы File и

FileStream оказываются взаимозаменяемыми. Так, в каждом из предыдущих примеров вместо FileStream можно использовать тип File.

static void Main(string[] args) {

 // Получение объекта FileStream с помощью File.Create .

Поделиться с друзьями: