
outBin.Close();
Операции ввода-вывода
Запись в открытый файл. используют метод Write.
Для записи в открытый файл
outBin.Write(22.4); outBin.Write("Хелло ворлд!"); outBin.Write(15);
Чтение данных из двоичного файла используют метод Read
Для чтения данных из открытого файла
Double m = inBin.ReadDouble(); string q = inBin.ReadString();
int j = inBin.ReadInt32();
Для проверки, достигнут ли конец файла при чтении используют метод PeekChar
while ((inBin.PeekChar())>=0)
{
e = inBin.ReadInt32(); Console.WriteLine(e);
}
Специальные операции
Удаление файла выполняется методом Delete объекта File:
string fileName = "c:\\temp\\a1.txt";
File.Delete(fileName);
Проверка существования файла выполняется методом Exist объекта File:
if (File.Exist("c:\\temp\\a1.txt")) { //программный код, который //выполнится если файл существует
}
Переименование/перенос файла выполняется методом Move объекта File:
string path = @"c:\temp\MyTest.txt"; string path2 = @"c:\temp\MyTest.bak"; File.Move(path, path2);
Console.WriteLine ("Файл {0} был переименован в {1}.", path, path2);
13

4.Примеры
Создать консольное приложение, которое будет выводить на экран строки файлаПримерt2.txt1из. корневого каталога диска D :
Текст программы:
using System;
using System.Collections.Generic; using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.Clear(); Console.WriteLine("Содержимое файла t2.txt"); string s;
//Открыть файловый поток для чтения
StreamReader f1 = new StreamReader(@"d:\t2.txt"); //Считывание строк из файла
while ((s=f1.ReadLine())!=null)
{
//вывод считанной строки на экран Console.WriteLine(s);
}
f1.Close(); //Закрыть файловый поток
}
}
}
Пример 2. Создать консольное приложение, которое будет считывать с клавиатуры
10 строк и записывать их в файл z3.txt расположенный в корневом каталоге диска D :
Текст программы:
using System;
using System.Collections.Generic; using System.Text;
using System.IO;
namespace ConsoleApplication1 {
class Program
{
static void Main()
{
Console.Clear(); string s; int i;
//Открыть файловый поток для записи
StreamWriter f1 = new StreamWriter(@"d:\z3.txt"); for (i=1;i<=10;i++)
{
Console.Write("Ввести строку=");
14

//Считать строку с клавиатуры s = Console.ReadLine();
//вывод считанной строки в файл f1.WriteLine(s);
}
f1.Close(); //Закрыть файловый поток
} |
|
|
} |
Создать |
консольное приложение, которое будет считывать числа из |
Пример 3. |
файла dat.txt возводить их в квадрат и записывать полученные значения в файл out.txt
Текст программы:
using System;
using System.Collections.Generic; using System.Text;
using System.IO;
namespace ConsoleApplication1 { class Program {
static void Main() {
Console.Clear(); string s=""; string s2; double x, y; //Открыть файловый поток для чтения
StreamReader f1 = new StreamReader(@"d:\dat.txt"); //Открыть файловый поток для записи
StreamWriter f2 = new StreamWriter(@"d:\out.txt");
while ((s=f1.ReadLine())!=null)
{
x = Convert.ToDouble(s); y = x * x;
s2=y.ToString(); //Преобразовать Y в строку //вывод полученной строки в файл f2.WriteLine(s2);
}
f1.Close(); //Закрыть файловый поток f1
f2.Close(); //Закрыть файловый поток f2
}
}
} Создать файл, содержащий целые числа. Из компонентов исходного файла сфПормироватимер 5: ь файл, записав в него числа, расположенные в исходном файле до максимального элемента. Массивы использовать нельзя.
//метод создания файла и заполнения файла значениями static void CreateFile(string filename)
{
BinaryWriter outBin = new BinaryWriter (File.Open(filename, FileMode.Create));
Console.Write("Введите количество элементов для записи в файл "); string s = Console.ReadLine();
int n = Convert.ToInt32(s); for (int i = 1; i <= n; i++)
{
Console.Write("Введите {0}-й элемент файла ",i); s = Console.ReadLine();
15
int m = Convert.ToInt32(s); outBin.Write(m);
}
outBin.Close();
}
//метод поиска максимального значения в файле static int FindMax(string filename)
{
BinaryReader inBin = new BinaryReader (File.Open(filename, FileMode.Open)); int e , i,max,maxnum;
e=i = maxnum = max = 0;
while ((inBin.PeekChar())>=0)
{
e = inBin.ReadInt32(); if (i > 0)
if (e > max) { max = e; maxnum = i; } else ;
else max = e; i++;
}
inBin.Close(); return maxnum;
}
//формирование нового файла
static void DoNewFile(string filename1,string filename2,int maxnum)
{
BinaryReader inBin = new BinaryReader (File.Open(filename1, FileMode.Open));
BinaryWriter outBin = new BinaryWriter (File.Open(filename2, FileMode.Create));
for (int i = 0; i < maxnum; i++)
{
int e = inBin.ReadInt32(); outBin.Write(e);
}
inBin.Close(); outBin.Close();
}
//метод вывода файла на экран
static void PrintFile(string filename)
{
BinaryReader inBin = new BinaryReader (File.Open(filename, FileMode.Open));
while ((inBin.PeekChar()) >= 0)
{
int e = inBin.ReadInt32(); Console.WriteLine(e);
}
inBin.Close();
}
//основная программа
16
static void Main(string[] args)
{
CreateFile("c:\\s1.dat"); int mn=FindMax("c:\\s1.dat");
DoNewFile("c:\\s1.dat", "c:\\s2.dat", mn); PrintFile("c:\\s2.dat"); Console.ReadKey();
} |
|
Создать файл, содержащий 10 целых чисел. Необходимо: |
• |
|
|
• |
считать файл и вывести его на экран; |
|
Пример 6. |
|
|
• |
считать данные из средины файла; |
|
• |
добавить новые данные в файл; |
|
|
считать файл и вывести его на экран. |
Текст программы:
using System; using System.IO;
class MyStream
{
public static void Main()
{
// Создаем новый пустой файл. if (File.Exists("test.data"))
{
Console.WriteLine("{0} файл существует! Будет удален. ", "test.data"); File.Delete("test.data");
}
FileStream fs = new FileStream("test.data", FileMode.CreateNew); // создаем поток для чтения данных
//Создаем объект для записи данных BinaryWriter w = new BinaryWriter(fs);
//записываем данные в файл test.data. for (int i = 0; i < 11; i++)
{
w.Write((int)i);
}
w.Close(); // Закрываем объект fs.Close(); // закрываем поток
//Создаем объект для записи данных в файл
fs = new FileStream("test.data", FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs);
// Читаем данные из файла test.data. int n;
for (int i = 0; i < 11; i++)
{
n = r.ReadInt32(); Console.WriteLine(n);
}
r.Close(); // Закрываем объект fs.Close(); // закрываем поток Console.WriteLine();
17
// Читаем данные из середины файла
fs = new FileStream("test.data", FileMode.Open, FileAccess.Read); fs.Seek(5*sizeof(int), SeekOrigin.Begin);
r = new BinaryReader(fs); Console.WriteLine(r.ReadInt32()); r.Close();
fs.Close();
// Добавляем новые данные в файл
fs = new FileStream("test.data", FileMode.Append, FileAccess.Write); w = new BinaryWriter(fs);
w.Write((int)55); w.Write((int)77); r.Close(); fs.Close(); Console.WriteLine();
// Считываем все данные из файла
fs = new FileStream("test.data", FileMode.Open, FileAccess.Read);
r = new BinaryReader(fs); |
|
for (int i = 0; i < 13; i++) |
|
{ |
// also OK |
Console.WriteLine(r.ReadInt32()); |
|
} |
|
r.Close(); |
|
fs.Close(); |
|
Console.WriteLine(); |
|
}
}
}
18

5.Контрольные задания. |
|
|
|
|||
1. В текстовом редакторе БЛОКНОТ создать текстовый файл |
|
|
||||
|
и ввести в него ряд вещественных чисел согласно варианта (см. таблицу 6)и |
|||||
сохранить его в каталоге D:\lr5\. |
|
arg но |
ер рабочего |
|||
места.txt |
|
|
|
|
|
|
Например для рабочего места №5 это будет D:\lr5\arg_05.txt |
|
|
||||
Примечание: |
|
|
|
|
|
|
Каждое число |
размещается в отдельной строке. В качестве |
десятичного |
||||
2. Составить программу, которая будет считывать из этого файла значения |
||||||
разделителя используется запятая! |
|
|
|
|||
переменной X и вычислять значения функции Y согласно варианта. Результаты |
||||||
(значения X и У) должны выводиться в текстовый файл tab.txt, размещённый в том же |
||||||
каталоге, в виде |
|
x = ###.#### |
y = ###.#### |
|
|
|
|
|
|
x = ###.#### |
y = ###.#### |
|
|
|
|
|
x = ###.#### |
y = ###.#### |
|
|
|
|
|
…................................................................. |
|
|
|
|
|
|
x = ###.#### |
y = ###.#### |
|
|
3. Предусмотреть обработку исключений, связанных с ошибками при проведении |
||||||
файловых операций. |
|
Таблица 6: Варианты задания |
Вариант |
Функция Y |
|
Значения X (файл) |
1 |
|
2.3, 3, 3.85, 4.2, 5.61, 6.12, 7.5, 8.1 |
|
2 |
|
0.5, 0.77, |
2, 3.1, 6.4, 9.82, 10, 12.4 |
3 |
|
1.2, 2.34, 3.7, 4.9, 6, 7.35,9.55, 11.8 |
|
|
|
|
|
4 |
|
4.2, 4.37,4.5,4.7,5,5.2,5.5,6.25 |
|
5 |
|
10, 11.4, 12, 14.5, 15.7, 17.3, 18.5,20.3 |
19

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.12, 3.25,4.71, 5.3, 7, 8.1, 9.5, 10.6 |
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.36, 0.79, 1.5, 1.8,2.5,3,3.75,4.2 |
|
8 |
y= |
|
|
eax+3 |
1.2, 2.34, 3.7, 4.9, 6, 7.35,9.55, 11.8 |
|||||||||||||
|
|
|
|
x+ x3+√ |
x |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
y= sin |
x |
cos |
x |
+√ |
|
|
|
|
|
|
10, 11.4, 12, 14.5, 15.7, 17.3, 18.5,20.3 |
||||||
|
x3 |
|||||||||||||||||
2 |
2 |
|||||||||||||||||
10 |
y= 1+e−2x |
0.5, 0.77, 2, 3.1, 6.4, 9.82, 10, 12.4 |
||||||||||||||||
|
|
|
|
ex +e−x |
|
|||||||||||||
11 |
y=(√ |
|
|
|
) |
|
|
2.3, 3, 3.85, 4.2, 5.61, 6.12, 7.5, 8.1 |
||||||||||
|
x2x+ x3 |
|||||||||||||||||
|
|
|
|
|
|
2x2+5 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
y= |
3+cos2 x 2 |
2.12, 3.25,4.71, 5.3, 7, 8.1, 9.5, 10.6 |
|||||||||||||||
|
|
|
2sinx+cos |
x |
|
|
|
|||||||||||
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20
6.Контрольные вопросы |
каталог. |
|
|
|
||
• |
Дайте определение понятию |
файла |
|
|||
• |
Дайте определение понятию |
полное имя. |
|
|||
• |
Дайте определение понятию |
файл |
|
|
|
|
• |
буфер ввода-вывода. |
. |
||||
• |
Дайте определение понятию |
|
|
|
|
|
• |
Перечислите атрибуты файла. |
FileAccess |
. |
|
||
• |
Перечислите возможные значения |
|
|
|
||
• |
Какие действия необходимо предпринять для записи данных в текстовый файл? |
|||||
|
Какие действия необходимо предпринять для чтения данных из текстового |
|||||
• |
файла? |
|
|
|
|
|
• |
Какие действия необходимо предпринять для записи данных в бинарный файл? |
|||||
|
Какие действия необходимо предпринять для чтения данных из бинарного |
|||||
|
файла? |
|
|
|
|
|
21