Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа с файлами.pdf
Скачиваний:
23
Добавлен:
15.04.2015
Размер:
350.23 Кб
Скачать

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+e2x

0.5, 0.77, 2, 3.1, 6.4, 9.82, 10, 12.4

 

 

 

 

ex +ex

 

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