Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c#_Presentation_11.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
740.35 Кб
Скачать

If (fs.CanRead && fs.CanWrite)

Console.WriteLine("Файл {0} может быть использован " +

"для записи и чтения.", fname);

else if (fs.CanRead)

Console.WriteLine("Файл {0} не перезаписываем.", fname);

Console.ReadLine();

}

}

Пример 11.15. Использование свойств Length и Name, а также методов WriteByte и ReadByte класса FileStream для записи данных в файл (байт за байтом) и проверки правильности записанных данных.

using System;

using System.IO;

class FStream

{ static void Main()

{ const string fileName = @"c:\temp\MyTest.txt";

// Генерация случайных данных для записи в файл.

byte[] dataArray = new byte[1000];

new Random().NextBytes(dataArray);

FileStream fileStream = new FileStream(fileName,

FileMode.Create);

// Запись данных в файл байт за байтом.

for (int i = 0; i < dataArray.Length; i++)

fileStream.WriteByte(dataArray[i]);

// Установка потоковой позиции в начало файла.

fileStream.Seek(0, SeekOrigin.Begin);

// Чтение и проверка данных.

for (int i = 0; i < fileStream.Length; i++)

if (dataArray[i] != fileStream.ReadByte())

{ Console.WriteLine("Ошибка записи данных.");

return;

}

Console.WriteLine("Данные были записаны в файл {0} и " +

"проверены.", fileStream.Name);

Console.ReadLine();

}

}

/* Вывод:

Данные были записаны в файл c:\temp\MyTest.txt и проверены.

*/

Пример 11.16. Использование свойства Length, а также методов Read и Write класса FileStream для считывания содержимого одного файла и запись его в другой файл.

using System;

using System.IO;

class TestRW

{ public static void Main()

{ // Определение файла для чтения и нового файла (для записи).

string pathSource = @"c:\temp\Source.txt";

string pathNew = @"c:\temp\newFile.txt";

FileStream fsSource = new FileStream(pathSource, FileMode.Open,

FileAccess.Read);

// Чтение исходного файла в байтовый массив.

byte[] bytes = new byte[fsSource.Length];

int numBytesToRead = (int)fsSource.Length;

int numBytesRead = 0;

while (numBytesToRead > 0)

{ // Чтение возвращает значение от 0 до numBytesToRead.

int n = fsSource.Read(bytes, numBytesRead,

numBytesToRead);

if (n == 0) break; // Выход из цикла, если конец файла

numBytesRead += n;

numBytesToRead -= n;

}

numBytesToRead = bytes.Length;

// Вывод на экран:

Console.WriteLine("Файл {0} прочитан.", pathSource);

Console.WriteLine("Массив считанных байтов:");

for (int i = 0; i < bytes.Length; i++)

Console.WriteLine(bytes[i]);

// Запись байтового массива в другой FileStream (в новый файл).

FileStream fsNew = new FileStream(pathNew, FileMode.Create,

FileAccess.Write);

fsNew.Write(bytes, 0, numBytesToRead);

Console.WriteLine("Файл {0} записан.", pathNew);

Console.ReadLine();

}

}

/* Вывод:

Файл c:\temp\Source.txt прочитан.

Массив считанных байтов:

...

Файл c:\temp\newFile.txt записан.

*/

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