Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetodichkaC_14ch1.doc
Скачиваний:
51
Добавлен:
26.03.2016
Размер:
1.61 Mб
Скачать

8.3. Запись данных в файл. Класс StreamWriter

Класс StreamWriter позволяет осуществлять запись в файл символов и строк, он самостоятельно выполняет все необходимые преобразования и производит запись в объект FileStream.

Существуют разнообразные способы создания экземпляров класса StreamWriter. Если уже имеется объект FileStream, то можно воспользоваться им для создания объекта StreamWriter:

FileStream f = new FileStream("1.txt", FileMode.CreateNew);

StreamWriter sw = new StreamWriter(f);

Объект StreamWriter может также создаваться непосредственно из файла:

StreamWriter sw = new StreamWriter("1.txt", true);

Этот конструктор принимает в качестве параметров имя файла и логическое значение, которое указывает на то, следует ли добавлять информацию к уже существующему файлу или необходимо создать новый. Если это значение равно false, то либо происходит создание нового файла, либо из существующего файла сначала удаляется все хранящаяся в нем информация, а затем он открывается на запись. Если же это значение равно true, то файл просто открывается, а все хранящаяся в нем информация сохраняется. Если такого файла не существует, то создается новый файл.

Обратите внимание на то, что здесь нет такого широкого спектра возможностей, как при создании объекта FileStream. Кроме логического значения, определяющего, следует ли добавлять информацию к уже существующему файлу или создавать новый файл, нет никаких других опций, например, отсутствует возможность задания свойства FileMode, которое мы уже задавали при работе с классом FileStream. Точно так же отсутствует возможность задания свойства FileAccess, поэтому доступ к файлу – чтение/запись. Для того чтобы воспользоваться какой-либо из этих возможностей, следует сначала обратиться к конструктору класса FileStream, а затем создать объект StreamWriter на основе объекта FileStream.

Для того чтобы записать массив значений в файл, необходимо ввести размерность массива, описать его. Ввести элементы массива и записать его в файл. Общая структура программы записи в файл:

static void RecordArrToFile()

{

try

{

……………………………………………………………………

Console.Write("Введите путь к файлу и имя файла:");

string fname = Console.ReadLine();

StreamWriter f = new StreamWriter(fname);

foreach (var elem in a) f.WriteLine(elem);

f.Close();

}

catch (Exception e)

{

Console.Write("Error:" + e.Message);

} }

8.4. Чтение файла. Класс StreamReader

Метод FileStream.Read() является основным средством, позволяющим осуществлять доступ к данным, содержащимся в файле, на который ссылается объект FileStream:

public int Read(byte[] array, int offset, int count);

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

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

Для чтения данных используется класс StreamReader. Так же, как и класс StreamWriter, класс StreamReader является общим классом, который может использоваться для любого потока. Наиболее распространенный способ создания таких объектов заключается в использовании заранее созданного объекта FileStream:

FileStream f = new FileStream("1.txt", FileMode.Open);

StreamReader sr = new StreamReader(f);

Так же, как и класс StreamWriter, StreamReader может создаваться непосредственно на основе строки, в которой содержится путь к конкретному файлу:

StreamReader sr = new StreamReader("1.txt");

Для того чтобы осуществить чтение массива из файла, необходимо ввести путь к файлу и имя файла. При чтении файла необходимо разделить строку на элементы, используя заданные разделители и результат поместить в массив строк. Общая структура программы чтение массива из файла:

static void GetdArrFromFile()

{

try

{

Console.Write("Введите путь к файлу и имя файла:");

string fname = Console.ReadLine();

StreamReader f = new StreamReader(fname);

string str;

int size = 0;

string[] b;

Console.WriteLine("Исходный массив:");

while ((str = f.ReadLine()) != null) {

b = str.Split();

double[] a = new double[b.Length];

for (size = 0; size < b.Length; size++) {

a[size] = double.Parse(b[size]);

Console.WriteLine(a[size]);

}

}

f.Close();

}

catch (Exception e)

{

Console.Write("Error:" + e.Message);

}

}

В статическом методе Main() можно использовать меню, например:

static void Main()

{

Console.WriteLine("\t Меню:\n1. Запись в файл\n2. Чтение файла\n3. Выход");

Console.Write("Введите ваш выбор:");

string s = Console.ReadLine();

switch (s) {

case "1": RecordArrToFile();

break;

case "2": GetdArrFromFile();

break;

case "3":

return;

default: Console.WriteLine("");

break;

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]