Чтобы воспользоваться этой программой, укажите имена исходного и выходного файлов. Например, для копирования файла FIR'ST.DAT в файл SECOND.DAT введите в командной строке следующее:
CopyFile FIRST.DAT SECOND.DAT
*/
using System; using System.10;
class CopyFile {
static void Main(string[] args) { int i;
FileStream fin = null;
FileStream fout = null;
if(args.Length != 2) {
Console.WriteLine("Применение: CopyFile Откуда Куда"); return;
}
try { 1
// Открыть файлы.
fin = new FileStream(args[0], FileMode.Open) ; fout = new FileStream(args[1] , FileMode.Create);
// Скопировать файл, do {
i = fin.ReadByte;
if(i != -1) fout.WriteByte((byte)i);
} while (i != -1);
} catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);
} finally {
if(fin != null) fin.Close ; if(fout != null) fout.Close ;
>
Символьный ввод-вывод в файл
Несмотря на то что файлы часто обрабатываются побайтово, для этой цели можно воспользоваться также символьными потоками. Преимущество символьных потоков заключается в том, что они оперируют символами непосредственно в уникоде. Так, если требуется сохранить текст в уникоде, то для этого лучше всего подойдут именно символьные потоки. В целом, для выполнения операций символьного ввода-вывода в файлы объект классаFileStreamзаключается в оболочку классаStreamReaderилиStreamWriter.В этих классах выполняется автоматическое преобразование байтового потока в символьный и наоборот.
Не следует, однако, забывать, что на уровне операционной системы файл представляет собой набор байтов. И применение классаStreamReaderилиStreamWriterникак не может этого изменить.
КлассStreamWriterявляется производным от классаТех tW rite г,а классStreamReader— производным от классаTextReader.Следовательно, в классахStreamReaderиStreamWriterдоступны методы и свойства, определенные в их базовых классах.
Применение класса StreamWriter
Длясоздания символьного потока вывода достаточно заключить объект классаStream,напримерFileStream,в оболочку классаStreamWriter.В классеStreamWriterопределено несколько конструкторов. Ниже приведен едва ли не самый распространенный среди них:
StreamWriter(Stream
где