Professional Documents
Culture Documents
24. Файлове
24. Файлове
ИЗГОТВИЛ: ВАНЯ
ЯНЕВА
1. Потоци от данни.
В езиците за програмиране съществува възможност програмата както
да чете входните си данни от файл, така и да извежда изходните си
данни във файл.
Файловете се разглеждат като потоци – подредени последователности
от байтове, които се изпращат от едно устройство и се получават в
друго устройство.
Потоците позволяват само последователен достъп до данните.
Всички потоци в С# се намират в пространството от имена System.IO
което означава, че ако искаме да използваме файлове, в началото на
програмите трябва да добавим директивата:
using System.IO;
2. Четене от текстов файл.
За да може компютъра да чете входните данни от текстов файл,
трябва да се свърже специална променлива от класа StreamReader
(логически файл) с реалния файл, разположен на носител на данни
(физически файл).
Това става по време на инициализацията на тази променлива с
помощта на специален метод, който се нарича конструктор и се
пише след ключовата дума new и има същото име като класа:
SreamReader r = new StreamReader (<име на файл>,
Encodig.GetEncoding(“windows-1251”));
Този метод има два аргумента – първият е името на
физическия файл и е от тип низ, а втория аргумент задава
кодирането на файла, за да можем да четем кирилица от него.
Ако файлът не се намира в текущата папка на изпълнимия
файл на програмата, тогава трябва да се зададе и пътят до
него, като е препоръчително този път да започва от папката на
изпълнимия файл – това прави програмата по независима при
евентуалния й пренос на друг компютър.
Самото четене на данни от файла става с помощта на
променливата r, която играе ролята на логически файл и може
да стане по два начина.
Първи начин: програмата прочита целия текстов файл наведнъж
като един низ с метода ReadToEnd( ) на класа StreamReader. След
това файлът може да бъде обработван или показан в
интерфейсния елемент richTextBox:
String textFile = r.ReadToEnd( );
richTextBox1.Text = textFile;
Втори начин: файла се чете ред по ред чрез метода ReadLine( ) на
класа StreamReader, който работи по същия начин като метода
ReadLine( ) на класа Console. За целта трябва да се използва
оператор за цикъл.
Най-подходящ е оператора while, тъй като обикновенно не се
знае от колко реда е файлът. Когато се достигне края на файла
се прочита неговия знак за край null и това може да се
използва за условие за край на цикъла. Променливата, която
ще се използва в цикъла трябва да е от тип низ, защото
текстовия файл е последователност от редове от тип низ:
string line = “”;
while (line != null)
{
line = r.ReadLine( );
richTextBox1.Text = richTextBox1.Text + line +”\n”;
}
След като приключим работата с файла трябва да го
затворим с метода Close( ) на класа StreamReader, т.е.
r.Close( );
Ако искаме да започнем да четем файла отначало,
трябва да отворим файла с метода – конструтор.
3. Записване в текстов файл.
В С# се използват методите WriteLine( ) и Write( ) на
класа StreamWriter, които работят по същия начин като
методите WriteLine( ) и Write( ) на класа Console.
Първоначално трябва да свържем променлива от класа
StreamWriter с физическия файл, в който ще записваме.
Това става по време на инициализацията на променлива
с помощта на специален метод, който се нарича
коструктор и се пише след ключовата дума new и има
същото име като класа:
StreamWtiter w = new StreamWriter (<име на файла>,
<true/false>, Encoding.GetEncoding(“windows-1251”));
Този метод има три аргумента:
1. Името на физическия файл от тип низ. Ако е необходимо може да се
зададе и път до файла, за да бъде посочено мястото за неговото
създаване. Ако не се зададе път, то файлът се създава в текущата папка
на изпълнимия файл на програмата.
2. Логически тип: true – ако файла съществува и данните се добавят в
края на файла и false – ако файлът се презапише т.е. изтриват се всички
предишни данни.
3. Кодиране на файла за да можем да пишем на кирилица в него.
Записването на данни във файла става с метода WriteLine като
за аргумент се използва низ, който ще се запише във файла:
w.WriteLine(“Николай Петков“);
След приключване на записването във файла задължително
трябва да затворим файла чрез метода Close( ) на класа
StreamWriter:
w.Close( );
По този начин във файла се добавя знак за край на файла и се
извършва съхраняването му.
4. Работа с компютър.
Зад1:
Допълнете създадената в предишния урок програма
clasResults с възможност за съхраняване на данните в
текстов файл с име clasFile.txt.
Решение:
Допълваме формата с два бутона – за съхранение на
данните на класа в текстов файл и за прочитане на
данните за класа от текстов файл в паметта. Ще напишем
код само на бутона Запази файл:
Интерфейс:
Нови бутони
Код на бутона „запази файл“: