KN_6_2013-2014 / НПП_6_з_2013 / НПП_6_з_2013 / Лаб_раб_файлы / Теоретические сведения
.pdfТеоретические сведения.
1.Создать консольное приложение, которое будет считывать числа из файла t2.txt возводить их в квадрат и записывать полученные значения в файл t3.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:t2.txt"); //Открыть файловый поток для записи
StreamWriter f2 = new StreamWriter(@"D:t3.txt"); //while (s != null)
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
}
}
}
Запись в файл.
Для записи (а в последующем и для чтения) в файл мы будем использовать символьные потоки позволяющие оперировать непосредственно с символами
Unicode.
StreamWriter sw = new StreamWriter("D:t2.txt"); sw.WriteLine("блаблабла");
sw.Close();
После всех действий над файлом не забываем закрывать его используя метод Close(), в противном случае изменения в файле не только не будут сохранены. Приведеный выше пример записи файла полностью перезаписывает его, если же надо дописать в конец файла:
StreamWriter sw;
FileInfo fi = new FileInfo("D:t2.txt"); sw = fi.AppendText(); sw.WriteLine("blablabla");
sw.Close();
Запись из формы построково
StreamWriter sw;
FileInfo fi = new FileInfo("D:t2.txt"); sw = fi.AppendText();
string aa = textBox1.Text; sw.WriteLine(aa); sw.Close();
Использование контролов OpenFileDialog и SaveFileDialog для работы с файлами
Для изучения работы с контролами OpenFileDialog и SaveFileDialog создадим новое решение и поместим на форму контролы RichTextBox, OpenFileDialog и SaveFileDialog. Контролы OpenFileDialog и SaveFileDialog не визуальные и, потому, разместились ниже формы. Проект решения с которым будем работать примет вид, показанный на Рис.1.
Рис.1 Проект решения для работы с OpenFileDialog и SaveFileDialog
Дважды кликнем на форме (вне контролов) и, таким образом, создадим обработчик Form1_Load, который будет вызываться при каждой загрузки формы и который в дальнейшем будем часто использовать для начальной инициализации параметров программы и переменных. В обработчике запишем код очистки RichTextBox:
private void Form1_Load(object sender, System.EventArgs e)
{
richTextBox1.Clear();
}
Обработчик нажатия кнопки Закрыть приложение:
private void button3_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
Основные свойства OpenFileDialog
Свойство AddExtension разрешает или запрещает автоматическое добавление расширение, указанное в свойстве DefaultExt.
Свойство DefaultExt - расширение, принятое по умолчанию для автоматического добавления к имени файла при AddExtension=true.
Свойство CheckFileExists - используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла, которого не существует в данной директории и нажал кнопку "Oткрыть" при невыбранном кликом мышки файле. При CheckFileExists=true вместо прерывания будет выдано сообщение, что такого файла нет и исключения не вызывается.
На Рис.2 показано окно предупреждение при FileName=a.doc, CheckFileExists=true и нажатии кнопки "Oткрыть" при невыбранном файле.
Рис.2 Окно предупреждения при CheckFileExists=true
Свойство FileName - имя файла по умолчанию для выборки если была нажата кнопка OK и не выбрн кликом мышки файл в окне диалога.
Свойство CheckPatchExists - используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла с несуществующим именем директории. Окно полностью анлогично показанному на Рис.2., например, при FileName=С:\3\a.doc и не выбранном файле в директории C:\ и нажатии кнопки "Oткрыть" будет выдано сообщение, поазанное на Рис.3. При CheckPatchExists=true вместо прерывания будет выдано только сообщение.
Рис.3 Окно предупреждения при CheckPatchExists=true
Свойство DereferenceLinks - используется для указания контролу что именно возвращпть при выборе файла ссылки - файл по ссылке (true) или файл самой сылки (false).
Свойства Filter, FilterIndex - фильтр для выбираемых файлов и индекс строки, отображаемой в окошечке "Имя файла". Например значение свойства заданного строкой при FilterIndex=1.
rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt
позволит выбрать только текстовые файлы в формате rtf или txt. В окошечке "Тип файла" будет только две строки:
rtf файлы (*.rtf) txt файлы(*.txt)
а в окошечке "Имя файла" будет отображена первая.
Свойство InitialDirectory - директория, которая выбирается при старте
OpenFileDialog.
Свойство MultiSelect - при значении true позволяет выбрать мышкой при нажатой кнопке Shift или Ctrl несколько файлов и сохранить их имена в свойстве FileNames в виде массива строк.
Свойство ReadOnlyChecked - при значении true позволяет открывать команде OpenFile выбранные файлы только в режиме чтения.
Свойство RestoreDirectory - при true диалоговое окно восстанавливает текущий каталог к первоначальному значению если пользователь изменил каталог при поиске файлов, при false - нет.
Свойство работает только если закрыт поток Stream, созданный методом openFileDialog1.OpenFile().
Свойство ShowHelp - при значении true в окне диалога отображается кнопка "Справка".
Свойство ShowReadOnly - при значении true в окне диалога отображается переключатель "Только для чтения".
Свойство Title - заголовок диалогового окна.
Свойство ValidateNames - при true проверяет допустимость имени для файла применительно к Win32. Никакое заданное по умолчанию в этом случае не добавляется.
Отметим, что ве свойcтва могут быть заданы на этапе проектирования и программно - путем присвоения соответствующих значений.
Загрузка содержимого файла с использованием OpenFileDialog
Утановим для OpenFileDialog следующие значения свойств:
∙Filter - rtf файлы (*.rtf)|*.rtf
∙InitialDirectory - C:\
Способ, который позволяет загружать фйлы в формате .txt. При наличии на форме TextBox и установленном его свойстве MultiLine в true, в обработчике Form1_Load допишем строку
textBox1.Text="";
а cвойству Filter присвоим значение
rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt
В обработчике события нажатия кнопки Открыть напишем код для чтения текстовых файлов.
private void button1_Click(object sender, System.EventArgs e)
{
openFileDialog1.Filter="rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt"; if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamReader streamReader; streamReader = new
System.IO.StreamReader(openFileDialog1.FileName);
richTextBox1.Text = streamReader.ReadToEnd(); streamReader.Close();
//Можно указть кодировку вывода отличную от кодировке по умолчанию
streamReader = new System.IO.StreamReader(openFileDialog1.FileName,
System.Text.Encoding.GetEncoding("windows-1252")); textBox1.Text = streamReader.ReadToEnd(); streamReader.Close();
}