- •1 Классы потоков
- •1.3 Символьные классы потоков
- •2.1.2 Запись данных в консольный входной поток
- •2.2 Класс FileStream. Файловый побайтовой ввод-вывод
- •2.2.1 Открытие и закрытие файла
- •2.2.2 Считывание байт из объекта класса FileStream..
- •2.3 Файловый ввод-вывод с ориентацией на символы
- •2.3.1 Использование класса StreamWriter
- •2.3.2 Использование класса StreamReader
- •2.4 Перенаправление стандартных потоков
- •2.5 Считывание и запись двоичных данных
- •2.5.1 Класс BinaryWriter
- •Класс BinaryReader
- •Применение двоичного ввода-вывода
- •2.7 Считывание входных данных из массива и запись их в массив
- •2.9 Преобразование числовых строк во внутреннее представление
2.2.2 Считывание байт из объекта класса FileStream..
№ 5
// Отображение содержимого текстового файла CodeFile1.cs
//
using System;
using System.IO;
class ShowFile
{ public static void Main(string[] args)
{ int i;
FileStream fin;
try
{
Console.WriteLine("\n URA_1");
fin = new FileStream(args[0], FileMode.Open);
}
catch (FileNotFoundException exc)
{
Console.WriteLine("\n URA_2");
Console.WriteLine("\n " + exc.Message);
return;
}
catch (IndexOutOfRangeException exc)
{
Console.WriteLine("\n URA_3");
Console.WriteLine("\n " + exc.Message +
"\n Применение: ShowFile d:/dci/f115s/f115/CodeFile1.cs \n\n\n ");
return;
}
// Считываем байты до тех пор, пока не встретится EOF.
do
{
try
{
i = fin.ReadByte();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
return;
}
if (i != -1) Console.Write((char)i + "U_4");
} while (i != -1);
fin.Close();
}
}
Рис 5 Результаты считывания байт с файла
2.2.3 Запись данных в файл
№ 6
// Запись данных в файл d:\test1.txt
using System;
using System.IO;
class WriteToFile
{
public static void Main(string[] args)
{
FileStream fout;
// Открываем выходной файл 11
try
{ // Console.WriteLine("\n\n\n URA1 ");
fout = new FileStream("d:/ddd.doc", FileMode.Create); // 14
// Console.WriteLine("\n\n\n URA2");
}
catch (IOException exc)
{ // Console.WriteLine("\n\n\n URA3");
Console.WriteLine(exc.Message + "\n Ошибка при открытии выходного файла.");
return;
}
// Записываем в файл алфавит. 21
try
{ // Console.WriteLine("\n\n\n URA4");
for (char с = 'А'; с <= 'Я'; с++)
fout.WriteByte((byte)с);
}
catch (IOException exc)
{ // Console.WriteLine("\n\n\n URA5");
Console.WriteLine(exc.Message + " Ошибка при записи в файл.");
}
//Console.WriteLine("\n\n\n URA6");
fout.Close();
// Console.WriteLine("\n\n\n URA7");
}
}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Рис 6 Результаты записи данных в файл
??? 2.2.4 Выполнение копирования файла (применение класса FileStream – f116)
№ 7
/* Копирование файла. При этом следует указать имена исходного,
который копируется, и приемного файлов (куда копируется)
Имена файлов указываются в командной строке в виде
CopyFile d:/dom1.doc d:/dom2.doc (dom2 + dom1)
*/
using System;
using System.IO;
class CopyFile
{ public static void Main(string[] args)
{ int i;
FileStream fin;
FileStream fout;
try { // Открываем входной файл
fin = new FileStream(args[0], FileMode.Open); // 17
}
catch (FileNotFoundException exc) {
Console.WriteLine("\n " + exc.Message + "\n Входной файл не найден.");
return;
}
// Открываем выходной файл
try { fout = new FileStream(args[1], FileMode.Create);
} catch (IOException exc) {
Console.WriteLine("\n " + exc.Message +
"\n Ошибка при открытии выходного файла.");
return;
}
catch (IndexOutOfRangeException exc) {
Console.WriteLine(" " + exc.Message +
"\n Применение: CopyFile d:/dom1.doc d:/dom2.doc");
return;
}
// Копируем файл
try { do { i = fin.ReadByte();
if (i != -1) fout.WriteByte((byte)i);
} while (i != -1);
}
catch (IOException exc) {
Console.WriteLine("\n " + exc.Message +
"\n Ошибка при чтении файла. ");
}
fin.Close();
fout.Close();
}
}