Работа с файлами c windows forms

Открытие и сохранение файлов с помощью OpenFileDialog и SaveFileDialog в Windows Forms и Visual C#

Последнее обновление: 31.10.2015

Окна открытия и сохранения файла представлены классами OpenFileDialog и SaveFileDialog.
Они имеют во многом схожую функциональность, поэтому рассмотрим их вместе.

OpenFileDialog и SaveFileDialog имеют ряд общих свойств, среди которых можно выделить следующие:

  • DefaultExt: устанавливает расширение файла, которое добавляется по умолчанию, если пользователь ввел имя файла без расширения

  • AddExtension: при значении true добавляет к имени файла расширение при его отсуствии. Расширение берется из
    свойства DefaultExt или Filter

  • CheckFileExists: если имеет значение true, то проверяет существование файла с указанным именем

  • CheckPathExists: если имеет значение true, то проверяет существование пути к файлу с указанным именем

  • FileName: возвращает полное имя файла, выбранного в диалоговом окне

  • Filter: задает фильтр файлов, благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате
    Название_файлов|*.расширение. Например, Текстовые файлы(*.txt)|*.txt. Можно задать сразу несколько фильтров, для этого они разделяются
    вертикальной линией |. Например, Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg

  • InitialDirectory: устанавливает каталог, который отображается при первом вызове окна

  • Title: заголовок диалогового окна

Отдельно у класса SaveFileDialog можно еще выделить пару свойств:

  • CreatePrompt: при значении true в случае, если указан не существующий файл, то будет отображаться сообщение о его создании

  • OverwritePrompt: при значении true в случае, если указан существующий файл, то будет отображаться сообщение о том, что файл будет перезаписан

Чтобы отобразить диалоговое окно, надо вызвать метод ShowDialog().

Рассмотрим оба диалоговых окна на примере. Добавим на форму текстовое поле textBox1 и две кнопки button1 и button2. Также перетащим с панели инструментов
компоненты OpenFileDialog и SaveFileDialog. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:

OpenFileDialog и SaveFileDialog в Windows Forms

Теперь изменим код формы:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        button1.Click += button1_Click;
        button2.Click += button2_Click;
        openFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";
        saveFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";
    }
    // сохранение файла
    void button2_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
            return;
        // получаем выбранный файл
        string filename = saveFileDialog1.FileName;
        // сохраняем текст в файл
        System.IO.File.WriteAllText(filename, textBox1.Text);
        MessageBox.Show("Файл сохранен");
    }
    // открытие файла
    void button1_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
            return;
        // получаем выбранный файл
        string filename = openFileDialog1.FileName;
        // читаем файл в строку
        string fileText = System.IO.File.ReadAllText(filename);
        textBox1.Text = fileText;
        MessageBox.Show("Файл открыт");
    }
}

По нажатию на первую кнопку будет открываться окно открытия файла. После выбора файла он будет считываться, а его текст будет отображаться в
текстовом поле. Клик на вторую кнопку отобразит окно для сохранения файла, в котором надо установить его название. И после этого произойдет сохранение
текста из текстового поля в файл.

Дата изменения: 8 декабря 2022

Лабораторные работы си шарп. Работа с файлами

Приложения для Windows forms

Лабораторная работа 15

Выполнить: Разработайте приложение, которое сохраняет в файл информацию из списка (ListBox) и загружает из файла информацию обратно в список.

Пример выполнения:
Работа с файлами в C#

[Название проекта: Lesson_15Lab1, название файла L15Lab1.cs]

✍ Выполнение:

  1. Поместите на форму элементы: список ListBox (lst), ListBox (lstFromfile) текстовое поле TextBox (txt), кнопки: btnAdd («Добавить элемент в список»), btnSave («Сохранить в файле»), btnOpen («Загрузить из файла»). Расположите правильно элементы (рисунок).
  2. Добавьте пространство имен для работы с файлами:
  3. При нажатии на btnAdd («Добавить элемент в список») в список lst должна добавиться строка, записанная в текстовое окно txt, а само окно при этом должно очиститься. Добавьте код для события click кнопки btnAdd:
  4. 1
    2
    3
    4
    5
    
    private void btnAdd_Click(object sender, EventArgs e)
            {
                lst.Items.Add(txt.Text);
                txt.Clear();
            }
  5. По щелчку на кнопке btnSave вся информация со списка должна добавляться во введенный пользователем в текстовое окно текстовый файл. Для этого добавьте процедуру для события Click кнопки:
  6. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    private void btnSave_Click(object sender, EventArgs e)
            {
                string fileName = txtFileName.Text; // путь к файлу
                if (File.Exists(fileName)) 
                {
                    File.Delete(fileName); // если файл существует - удаляем его
                }
                using (FileStream fs = File.Create(fileName, 1024)) // класс для работы с файлами
    // класс для работы с данными файла в двоичной виде
                using(BinaryWriter bw = new BinaryWriter(fs)) 
                {
                    for (var i = 0; i < lst.Items.Count; i++) // пока не конец списка
                    {
                        bw.Write(lst.Items[i].ToString()); // записываем в файл каждый пункт
     
                    }
                    bw.Close();
                    fs.Close();
                }
              }
  7. Событие Click кнопки btnOpen («Загрузить из файла») запрограммируйте таким образом, чтобы в список помещались все строки из файла:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void btnOpen_Click(object sender, EventArgs e)
        {
            string fileName = txtFileName.Text;
            lstFromfile.Items.Clear();
            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            using (BinaryReader br = new BinaryReader(fs))
            {
             // метод PeekChar() возвращает следующий прочитанный символ
             // если символов нет - возвращается -1
                while (br.PeekChar() != -1) 
                {
                    // добавляем в список очередную прочитанную строку
                    lstFromfile.Items.Add(br.ReadString()); 
                }
                br.Close();
                fs.Close();
            }
        }
  1. Запустите приложение, внесите в список lst несколько строк и попытайтесь сохранить их в файл (желательно с расширением .txt: например, proba.txt). Если не написан путь к файлу, то файл сохранится в папке /bin/Debug Вашего проекта.

В программе продемонстрировано использование классов StreamWriter и StreamReader для чтения и записи текстовых файлов. Также в программе использованы элементы управления (компоненты) RichTextBox и OpenFileDialog.


Содержание

  • Условие задачи
  • Выполнение
    • 1. Запустить MS Visual Studio. Создать проект по шаблону Windows Forms Application
    • 2. Разработка формы приложения
    • 3. Элемент управления OpenFileDialog
    • 4. Добавление внутренних переменных в текст приложения
    • 5. Программирование события Load класса формы Form1
    • 6. Импорт пространства имен System.IO
    • 7. Программирование события клика на кнопке button1 («Открыть файл…»)
    • 8. Программирование события изменения текста в компоненте RichTextEdit
    • 9. Программирование события клика на кнопке “Сохранить файл”

Поиск на других ресурсах:

Условие задачи

Разработать программу чтения/записи текстовых файлов. В программе должна быть возможность выбора файла для чтения, его корректировка и запись этого файла на диск.

  ⇑

Выполнение

1. Запустить MS Visual Studio. Создать проект по шаблону Windows Forms Application

Подробный пример создания приложения по шаблону Windows Forms Application подробно описывается здесь.

  ⇑

2. Разработка формы приложения

Создать форму как показано на рисунке 1.

На форме размещаются следующие элементы управления:

  • два элемента управления типа Button. Автоматически будут созданы два объекта (экземпляры класса Button) с именами button1 и button2;
  • один элемент управления типа RichTextBox. Автоматически создается объект с именем richTextBox1;
  • элемент управления типа Label. Создается объект с именем label1.

C# Windows Forms. Элементы управления формы приложенияРис. 1. Элементы управления формы приложения

Осуществить настройку элементов управления типа Button следующим образом:

  • в элементе управления button1 свойство Text = “Открыть файл …»;
  • в элементе управления button2 свойство Text = “Сохранить файл».

Настройка формы приложения Form1:

  • свойство Text = “Чтение/запись текстовых файлов”;
  • свойство MaximizeBox = false (кнопка развертывания на весь экран становится неактивной);
  • свойство FormBorderStyle = “Fixed3D”;
  • свойство StartPosition = “CenterScreen”.

Также нужно откорректировать размеры формы и элементов управления на форме приблизительно так, как показано на рисунке 2.

В элементе управления RichTextBox (рис. 3):

  • свойство WordWrap = «false» (перенос длинных строк в пределах границ окна редактора).

Элемент управления RichTextBox представляет собой многострочное редактированное текстовое поле, которое работает с текстом в формате RTF (Rich Text Format – расширенный текстовый формат). Текст формата RTF сохраняет дополнительную служебную информацию, которая управляет свойствами каждого абзаца и изменением шрифта по ходу текста.

C# Windows Forms Форма приложенияРис. 2. Форма приложения после корректировки и настройки свойств

C# Windows Forms Элемент управления RichTextBox

Рис. 3. Элемент управления типа RichTextBox

  ⇑

3. Элемент управления OpenFileDialog

Для того, чтобы выбрать текстовый файл для чтения, нужно использовать элемент управления типа OpenFileDialog. Этот элемент управления представляет собой стандартное диалоговое окно Windows, предназначенное для открытия файлов.

Разместить на форме компонент OpenFileDialog (рис. 4).

C# Windows Forms Элемент управления OpenFileDialogРис. 4. Элемент управления OpenFileDialog

  ⇑

4. Добавление внутренних переменных в текст приложения

Для работы программы нужно ввести следующие дополнительные внутренние переменные:

  • f_open – определяет, выбрал ли пользователь файл командой «Открыть файл…»;
  • f_save – определяет, был ли сохранен ранее открытый файл (f_open = true).

Поэтому, в текст модуля “Form1.cs” нужно ввести следующий код:

...

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool f_open, f_save; // определяют выбор файла и его сохранение

        public Form1()
        {
            InitializeComponent();
        }
    }
}

...

  ⇑

5. Программирование события Load класса формы Form1

Событие Load возникает в момент загрузки формы сразу после запуска приложения на выполнение. В обработчик события целесообразно включать начальную инициализацию переменных.

В данном случае, начальной инициализации подлежат такие переменные и объекты как f_open, f_save, label1, richTextBox1.

В компоненте label1 будет отображаться путь к выбранному файлу. В компоненте richTextBox1 будет отображаться содержимое (текст) выбранного файла.



Листинг обработчика Form1_Load() события Load загрузки формы следующий:

private void Form1_Load(object sender, EventArgs e)
{
  f_open = false; // файл не открыт
  f_save = false;
  label1.Text = "-";
  richTextBox1.Text = "";
}

  ⇑

6. Импорт пространства имен System.IO

В данной работе для чтения и записи файлов будут использованы возможности классов StreamWriter и StreamReader из библиотеки классов языка C#.

Поэтому, для использования методов этих классов, нужно в начале кода модуля “Form1.cs” добавить строку:

using System.IO;

Таким образом, верхняя часть файла “Form1.cs” имеет вид:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

  ⇑

7. Программирование события клика на кнопке button1 (“Открыть файл…»)

Для вызова стандартного окна Windows выбора файла, пользователь должен выбрать команду «Открыть файл…» (button1). Пример программирования события клика на кнопке button1 подробно описан здесь.

Листинг обработчика button1_Click() события Click кнопки button1, осуществляющей открытие окна выбора файла, следующий:

private void button1_Click(object sender, EventArgs e)
{
  // 1. Открытие окна и проверка, выбран ли файл
  if (openFileDialog1.ShowDialog() == DialogResult.OK)
  {
    // 2. Вывести имя файла на форме в компоненте label1
    label1.Text = openFileDialog1.FileName;

    // 3. Установить флажки f_open и f_save
    f_open = true;
    f_save = false;

    // 4. Прочитать файл в richTextBox1
    // очистить предыдущий текст в richTextBox1
    richTextBox1.Clear();

    // 5. Создать объект класса StreamReader и прочитать данные из файла
    StreamReader sr = File.OpenText(openFileDialog1.FileName);

    // дополнительная переменная для чтения строки из файла
    string line = null;
    line = sr.ReadLine(); // чтение первой строки

    // 6. Цикл чтения строк из файла, если строки уже нет, то line=null
    while (line != null)
    {
      // 6.1. Добавить строку в richTextBox1
      richTextBox1.AppendText(line);

      // 6.2. Добавить символ перевода строки
      richTextBox1.AppendText("rn");

      // 6.3. Считать следующую строку
      line = sr.ReadLine();
    }

    // 7. Закрыть соединение с файлом
    sr.Close();
  }
}

Для вызова стандартного окна Windows выбора файла используется метод ShowDialog() компонента openFileDialog1. Выбранный файл сохраняется в свойства FileName объекта openFileDialog.

Для чтения текстового файла используется класс StreamReader, который осуществляет чтение символьных данных из файла. Чтобы создать экземпляр класса StreamReader используется метод OpenText() класса File. Класс File содержит ряд методов, которые хорошо подходят для упрощенного чтения символьных данных.

Чтобы считать строку из файла в программе используется метод ReadLine(), считывающий строку символов из текущего потока и возвращающий данные в виде строки. Если достигнут конец файла, то метод возвращает null.

Чтение строк осуществляется в локальную переменную line.

Чтобы добавить строку к объекту richTextBox1, используется метод AppendText().

  ⇑

8. Программирование события изменения текста в компоненте RichTextEdit

В соответствии с логикой программы, если в тексте файла происходят изменения, то флажок f_save должен быть равен значению false.

В компоненте richTextBox1 есть событие TextChanged, которое вызывается в момент изменения текста в редакторе (рис. 5).

C# Windows Forms Событие TextChanged элемент управлени richTextBox1Рис. 5. Событие TextChanged элемента управления richTextBox1

Обработчик события TextChanged имеет следующий вид:

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
  f_save = false;
}

  ⇑

9. Программирование события клика на кнопке “Сохранить файл

Для сохранения измененного текста в файле нужно выбрать команду «Сохранить файл» (кнопка button2). Для сохранения измененного в richTextBox1 файла используются методы класса StreamWriter.

Листинг обработчика события клика на кнопке button2 следующий:

private void button2_Click(object sender, EventArgs e)
{
  // 1. Проверка, открыт ли файл
  if (!f_open) return;

  // 2. Если файл открыт, то проверка – сохранен ли он
  if (f_save) return;

  // 3. Создание объекта типа StreamWriter и получение строчных данных
  StreamWriter sw = File.CreateText(openFileDialog1.FileName);

  // 4. Чтение строк с richTextBox1 и добавление их в файл
  string line;
  for (int i = 0; i < richTextBox1.Lines.Length; i++)
  {
    // 4.1. Чтение одной строки
    line = richTextBox1.Lines[i].ToString();

    // 4.2. Добавление этой строки в файл
    sw.WriteLine(line);
  }

  // 5. Закрыть объект sw
  sw.Close();
}

Объясним некоторые фрагменты кода.

В обработчике события button2_Click после проверки на наличие открытого файла создается объект (переменная) с именем sw типа StreamWriter.

При создании объекта используется метод CreateText() из типа File, возвращающего экземпляр типа StreamWriter. Имя файла сохраняется в свойстве openFileDialog1.FileName.

Для доступа к введенным строкам компонента richTextBox используется свойство Lines, которое есть массивом строк.

Чтобы добавить одну строку, нужно вызвать метод WriteLine() объекта sw типа StreamWriter.

  ⇑


Связанные темы

  • C#. Пример создания приложения копирования файлов. Класс FileStream
  • Пример разработки приложения демонстрации работы списков и ассоциативных массивов. Классы Dictionary, List, StreamReader

  ⇑


Лабораторная работа №5

Основы работы с файлами в C# с использованием Windows Forms.

1. Цель

ознакомиться с компонентами и методами работы с файлами в С# c использованием Windows Form в простых Windows приложениях. Ознакомится с свойствами и методами контролов OpenFileDialog и SaveFileDialog, а так же с классами File, Path,

FileSystemInfo, FileInfo.

2.Методические указания

1.При изучении языка программирования С# будет использоваться интегрированная среда разработки программного обеспечения Microsoft Visual Studio Express 2013 для Windows Desktop. Будут использованы основные элементы .NET Framework и связь С# с элементами платформы .NET.

2.По окончанию работы сохраните все созданные файлы на своих носителях.

3.Защита лабораторной работы производится только при наличии электронного варианта работающего скрипта.

3.Теоретические сведения

Для изучения работы с контролами OpenFileDialog и SaveFileDialog создадим новое решение и поместим на форму контролы RichTextBox, OpenFileDialog и SaveFileDialog. Контролы OpenFileDialog и SaveFileDialog не визуальные и, потому,

разместились ниже формы. Проект решения, с которым будем работать примет вид, показанный на Рис.5.1.

Рис.5.1 Проект решения для работы с OpenFileDialog и SaveFileDialog

Дважды кликнем на форме (вне контролов) и, таким образом, создадим, обработчик Form1_Load, который будет вызываться при каждой загрузки формы и который в дальнейшем будем часто использовать для начальной инициализации параметров программы и переменных. В обработчике запишем код очистки

RichTextBox:

private void Form1_Load(object sender, System.EventArgs e)

{

richTextBox1.Clear();

}

Использование контрола OpenFileDialog

Основные свойства OpenFileDialog:

1.Свойство AddExtension разрешает или запрещает автоматическое добавление расширения, указанное в свойстве DefaultExt.

2.Свойство DefaultExt — расширение, принятое по умолчанию для автоматического добавления к имени файла при AddExtension=true.

3.Свойство CheckFileExists — используется для получения или установки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла, которого не существует в данной директории и нажал кнопку «Oткрыть» при невыбранном кликом мышки файле. При CheckFileExists=true вместо прерывания будет выдано сообщение, что такого файла нет и исключения не вызывается. На Рис.5.2. показано окно предупреждение при FileName=a.doc, CheckFileExists=true и нажатии кнопки «Oткрыть» при невыбранном файле.

Рис.5.2 Окно предупреждения при CheckFileExists=true

4.Свойство FileName — имя файла по умолчанию для выборки, если была нажата кнопка OK и не выбранкликом мышки файл в окне диалога.

5.Свойство CheckPatchExists — используется для получения или установки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла с несуществующим именем директории.

6.Свойство DereferenceLinks — используется для указания контролу, что именно возвращать при выборе файла ссылки — файл по ссылке (true) или файл самой ссылки(false).

7.Свойства Filter, FilterIndex — фильтр для выбираемых файлов и индекс строки, отображаемой в окошечке «Имя файла». Например, значение свойства заданного строкой при FilterIndex=1.

rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt

позволит выбрать только текстовые файлы в формате rtf или txt. В окошечке «Тип файла» будет только две строки:

rtf файлы (*.rtf) txt файлы(*.txt)

а в окошечке «Имя файла» будет отображена первая.

8.Свойство InitialDirectory — директория, которая выбирается при старте

OpenFileDialog.

9.Свойство MultiSelect -при значении true позволяет выбрать мышкой при нажатой кнопке Shift или Ctrl несколько файлов и сохранить их имена в свойстве FileNames в виде массива строк.

10.Свойство ReadOnlyChecked — при значении true позволяет открывать команде OpenFile выбранные файлы только в режиме чтения.

11.Свойство RestoreDirectory — при true диалоговое окно восстанавливает текущий каталог к первоначальному значению, если пользователь изменил каталог при поиске файлов, при false -нет. Свойство работает только,если закрыт поток Stream, созданный методом openFileDialog1.OpenFile().

12.Свойство ShowHelp — при значении true в окне диалога отображается кнопка «Справка».

13.Свойство ShowReadOnly -при значении true в окне диалога отображается переключатель «Только для чтения».

14.Свойство Title -заголовок диалогового окна.

15.Свойство ValidateNames — при true проверяет допустимость имени для файла применительно к Win32. Заданное по умолчанию в этом случае не добавляется.

Отметим, что все свойства могут быть заданы на этапе проектирования и программно — путем присвоения соответствующих значений.

Загрузка содержимого файла с использованием OpenFileDialog

Установим для OpenFileDialog следующие значения свойств:

Filter -txt файлы (*.txt)|*.txt

InitialDirectory -C:temp

Поместим в директорию C:temp какой либо файл в формате *.txt и загрузим его в RichTextBox. Для этого напишем в обработчике нажатия кнопки 1 следующий код:

using System.IO;

private void button1_Click(object sender, EventArgs e)

{

string filename;

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

filename = openFileDialog1.FileName; MessageBox.Show(filename);

Text = filename;

Stream stream = openFileDialog1.OpenFile(); richTextBox1.LoadFile(stream, RichTextBoxStreamType.PlainText); stream.Close();

}

}

Если мы выбрали файл C:*.txt, то это имя отобразится в заглавии формы. Если теперь в свойстве FileName запишем *.txt, то при открытии диалога название «*» появляется в окошечке «Имя файла» и можно выполнить загрузку не выбирая мышкой файл, а сразу нажав кнопочку «OK». Достаточно в свойстве FileName записать a.doc и повторить то, что только что проделали выше, как получим предупреждение об отсутствии файла (см Рис.5.2.) и файл уже придется выбирать кликом мышки (кстати, отметим еще раз, что если установить свойство CheckFileExists в false то получим возбуждение исключения).

Рассмотрим еще один способ, который позволяет загружать файлы в формате .txt. Добавим на форму контрол TextBox и установим его свойство MultiLine в true, в обработчике Form1_Load допишем строку textBox1.Text=»»; а свойствуFilter присвоим значение rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt

В обработчике события нажатия кнопки 1 напишем код для чтения текстовых файлов.

private void button2_Click(object sender, 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();

}

}

Ели прочитаем текстовый файл в формате .rtf, то увидим уже знакомое нам по первому разделу содержимое файла, а при чтении текстового файла в формате .txt именно текст (см Рис.5.4).

Рис.5.4. Чтение файлов в формате .rtf(слева) и.txt(справа) в текстовом режиме

Использованиеконтрола SaveFileDialog

Основные свойства SaveFileDialog, отображаемые в окне Properties для SaveFileDialog аналогичны OpenFileDialog и имеют тоже назначение и тот же принцип использования, и, поэтому, в отдельном их рассмотрении нет необходимости.

Сохранение информации в файл с использованием SaveFileDialog: Установимдля SaveFileDialog следующие значения свойств:

Filter -rtf файлы (*.rtf)|*.rtf|txt файлы(*.txt)|*.txt

InitialDirectory -C:

DefaultExtension -rtf

Последнее актуально именно для SaveFileDialog и позволяет не задавать в окошечке «имя файла» полное имя,если файл будет сохраняться как .rtf файл. Для обработчика события нажатия кнопки 2 напишемследующий код:

private void button3_Click(object sender, EventArgs e)

{

MemoryStream memorystream = new System.IO.MemoryStream(); Stream filestream;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

//ассоциируем поток с именем файла -если файла нет создаем filestream = saveFileDialog1.OpenFile(); memorystream.Position = 0;

//сохраняем в поток содержимоеrichTextBox1 richTextBox1.SaveFile(memorystream, RichTextBoxStreamType.PlainText);

//переносим в файл информацию и закрываем поток memorystream.WriteTo(filestream); filestream.Close();

}

}

Для записи в формате .txt обычно используется StreamWriter, как это мы уже делали в предыдущем разделе (не забудем также подключить using System.IO;).

private void button1_Click(object sender, System.EventArgs e)

{

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

StreamWriter streamwriter =

new System.IO.StreamWriter(saveFileDialog1.FileName, false, System.Text.Encoding.GetEncoding(«utf-8»));

//ИзTextBox streamwriter.Write(this.textBox1.Text);

//Из RihTextBox -если убрать слэши -оба //текста контролов будут в одном файле

//streamwriter.Write(this.richTextBox1.Text);

streamwriter.Close();

}

}

РАБОТА С ФАЙЛАМИ В С#

Для изучения данного вопроса будем использовать проект решения предыдущего параграфа, убрав коды обработчиков событий нажатия кнопок. Контролы RichTextBox, TextBox, OpenFileDialog и SaveFileDialog нам пока не мешают и будут полезны в дальнейшем. Обработчик нажатия кнопки 3 и функцию Form1_Load оставим прежними.

Пространство имен System.IO

В библиотеки .NET Framework более чем 2500 классов. Все они является потомками класса System.Object. При объявлении класса обычно не указывается System.Object (это добавляется по умолчанию), хотя это и можно сделать и явно:

class MyClass:System.Object

{

}

Все классы сгруппированы по пространствам имен. Пространство имен System.IO (Рис.5.6) содержит классы и типы данных, используемые для работы (чтение и запись) с потоками и файлами и файловой системой.

Рис.5.6 Пространство имен System.IO

Классы Directory и File являются прямыми потомками класса Object и содержат статические методы для выполнения различных операций с папками и файлами (создание, удаление, проверка существования, и т. п.).

Класс Path -прямой потомок класса Object содержат статические методы для работы

спутями и именами файлов.

Классы BinaryReader и BinaryWriter, также прямые наследники класса Object,

содержат статические методы для чтения и записи примитивных типов данных как бинарных значений. Он содержит методы для каждого типа (ReadBoolean, ReadByte,

ReadBytes, ReadChar, ReadChars, ReadDecimal, ReadDouble и т.д.).

Классы DirectoryInfo и FileInfo — потомками абстрактного класса FileSystemInfo содержат не статические методы для выполнения операций с папками и файлами (создание, удаление, проверка существования, и т. п.). Для использования данных

классов

требуется

создатьих экземпляры.

Классы FileInfo и DirectoryInfo

являются

«запечатанными» классами (sealed classes)

-мы

можем

создавать экземпляры этих

классов, но наследовать от них невозможно.

Класс

Stream

— наследник абстрактного

класса

MarhalByRefObjekt

-также

абстрактный класс, обеспечивающий представление последовательности байтов. Классы наследники класса Stream, обеспечивают функции для работы с файлами (класс FileStream), памятью (класс MemoryStream) и дают возможность создать буфер в памяти для буферизованных потоковых операций чтения и записи(BufferedStream). Потоки поддерживают операции чтения, записи, а также операции позиционирования.

Классы TextReader и TextWriter используется для чтения и записи последовательности символов потоков. Их наследники StreamReader, StringReader, StreamWriter, StringWriter обеспечивают возможность чтения и записи строк и символов в строках.

Класс File и его использование

Класс File содержит набор статических методов, которые могут быть использованы для создания, открытия, копирования, удаления и перемещения файлов. Некоторые из методов класса File (например Create()) создают объекты типа FileStream или StreamWriter. При рассмотрении методов класса мы пока не будем заострять внимание на возможных прерываниях при использовании методов класса (об этом более подробно при рассмотрении методов класса FileInfo — прерывания у методов обоих классов идентичны). Рассмотрим основные метода класса:

Delete(string path) — удаляет файл c именем и в каталоге, определенным path.

Exists(string path) — проверяет наличие файла в указанном каталоге -при наличии файла возвращает true.

Create(string path), или Create (string path, int bufersize), используется для создания файла c именем и в каталоге, определенным path и с указанным размером буфера. Методы возвращают объект типа FileStream. Исключение возникает, если диск закрыт для записи.

private void button1_Click(object sender, System.EventArgs e)

{

//Символ @ блокирует использование косой черты //как маркера начала спецсимвола

string path = @»c:a.txt»;

//Испрользование методов Exists() и Delete() if(File.Exists(path))

{

File.Delete(path);

}

//Создаем файл и объект streamwriter, который будет //существовать до закрытия фигурной скобки using(FileStream filestream = File.Create(path, 1024))

{

Byte[] text

= new

UTF8Encoding(true).GetBytes(«Текст,

который

будет

записан

в

файл»);

filestream.Write(text, 0, text.Length);

}

}

Open(string

path, FileMode

mode, FileAccess acess, FileShare share)

открывает

файл по указанному пути, с указанным режимом чтения, записи и доступа для чтения — записи и указанной опцией совместного использования. При открытии создает объект типа FileStream. Обязательными параметрами являются только первые

два.

private void button1_Click(object sender, System.EventArgs e)

{

//Символ @ блокирует использование косой черты //как маркера начала спецсимвола

string path = @»c:c.txt»;

//Открываем файл и создаем объект filestream, который будет //существовать до закрытия фигурной скобки

using(FileStream filestream = File.Open(path,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite))

{

byte[] bText = new byte[1024]; UTF8Encoding text = new UTF8Encoding(true);

while(filestream.Read(bText,0,bText.Length) > 0)

{

richTextBox1.AppendText(text.GetString(bText)+»rn»);

}

try

{

using(FileStream filestream2

= File.Open(path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))

{

Text=»Файл открыт дважды.»;

}

}

catch(Exception ex)

{

string message=ex.Message;

Text=»Файл не может быть открыт дважды.»;

}

}

Данный фрагмент при опции совместного использования при FileShare.None

выведет в заголовок текст

Text=»Файл не может быть открыт дважды.»;

а при FileShare.ReadWrite для обоих методов Open (опция может быть только

одна и также)

Text=»Файл открыт дважды.»;

CreateText(string path) создает файл, который будет открыт для записи. Метод возвращает объект типа StreamWriter, который может быть использован для

записи текста в файл. Исключение возникает, если диск закрыт для записи.

private void button1_Click(object sender, System. EventArgs e)

{

//Символ @ блокирует использование косой черты //как маркера начала спецсимвола

string path = @»c:a.txt»;

//Метод Exists -проверяет наличие файла if(!File.Exists(path))

{

//Создаем файл и объект streamwriter, который будет

//существовать до закрытия фигурной скобки using(StreamWriter streamwriter = File.CreateText(path))

{

streamwriter.WriteLine(«Строка 1»); streamwriter.WriteLine(«Строка 2»); streamwriter.WriteLine(«Строка 3»);

}

}

}

OpenText(string path) используется для открытия существующего текстового файла

и создания объекта типа StreamReader:

private void button2_Click(object sender, System.EventArgs e)

{

using(StreamReader streamreader = File.OpenText(path))

{

string sString = «»;

while((sString = streamreader.ReadLine()) != null)

{

richTextBox1.AppendText(sString+»rn»);

}

}

}

На данном этапе можно запустить приложение с кодами обработчиков для кнопки 2 и одного из предыдущих пунктов для кнопки 1 и убедиться в действенности методов.

AppendText(string path) создает объект типа StreamWriter, который можно использовать для добавления текста в кодировке UTF-8 в конец файла. Добавим код добавления строк в конец фала к коду обработчика нажатия кнопки 1, код обработчика для кнопки 2 оставим прежним и убедимся в действенности метода,

выполнив приложение:

private void button1_Click(object sender, System.EventArgs e)

{

//Символ @ блокирует использование косой черты //как маркера начала спецсимвола

string path = @»c:a.txt»;

//Метод Exists -проверяет наличие файла if(File.Exists(path))

{

//Удаляем старый файл

File.Delete(path);

}

if(!File.Exists(path))

{

//Создаем файл и объект streamwriter, который будет //существовать до закрытия фигурной скобки using(StreamWriter streamwriter = File.CreateText(path))

{

streamwriter.WriteLine(«Строка 1»); streamwriter.WriteLine(«Строка 2»); streamwriter.WriteLine(«Строка 3»);

}

}

using(StreamWriter streamwriter = File.AppendText(path))

{

streamwriter.WriteLine(«Строка 4»); streamwriter.WriteLine(«Строка 5»); streamwriter.WriteLine(«Строка 6»);

}

}

void Copy(string sourepath,string destpatch,bool overwrite) – копирует существующий файл по новому адресу. При overwrite=false перезапись файла при его наличии не происходит.

void Move(string sourepath,string destpatch) — переносит существующий файл по новому адресу. Примеры использования методов Copy и Move:

private void button1_Click(object sender, System.EventArgs e)

{

//Создание пустой файла – можно без Using, но тогда надо закрыть поток

FileStream filestream=File.Create(«C:\a.txt»);

//Закрыть — иначе файл заблокирован filestream.Close();

//Или так

//using(FileStream filestream=File.Create(«C:\a.txt»)){}

//Перенос файла a.txt в b.txt File.Move(«C:\a.txt»,»C:\b.txt»);

//Проверка существования файла if(File.Exists(«C:\b.txt»))

{

//Копирование файла

File.Copy(«C:\b.txt»,»C:\d.txt»);

//Удаление файла

File.Delete(«C:\b.txt»);

}

}

SetAttributes(string path,FileAttributes) и GetAttributes(path) -позволяют установить и получить значение атрибутов файлов. Атрибуты файлов имеют тип FileAttributes. Структура типа -набор бит (например двоичные значения для ReadOnly -1, Hidden -2, System -4 и т.д.). Возможны следующие значения атрибутов:

Archive -файл готов к архивированию или к удалению;

Compressed -упакованный файл;

Device -резерв, пока не используется;

Directory -каталог;

Encrypted -файл зашифрован;

Hidden -скрытый файл;

Normal -у файла не установлены никакие атрибуты;

NotContentIndexed — файл не индексируется системой Windows Indexing System;

Offline -содержимое файла не доступно в режиме офлайн;

ReadOnly -только для чтения;

ReparsePoint — файл содержит блок данных, ассоциированных с файлом или каталогом;

SparsePoint — файл содержит большой объем пустых данных;

System — файл операционной системы или используется ОС.

Temporary — файл является временным файлом, созданным либо операционной системой, либо какой либо программой.

Следующий код показывает основные возможности по работе с атрибутами:

private void button1_Click(object sender, System.EventArgs e)

{

//Создание пустой файла string path=@»C:a.txt»; if (!File.Exists(path))

{

I am new to the OpenFileDialog function, but have the basics figured out. What I need to do is open a text file, read the data from the file (text only) and correctly place the data into separate text boxes in my application. Here’s what I have in my «open file» event handler:

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenFileDialog theDialog = new OpenFileDialog();
    theDialog.Title = "Open Text File";
    theDialog.Filter = "TXT files|*.txt";
    theDialog.InitialDirectory = @"C:";
    if (theDialog.ShowDialog() == DialogResult.OK)
    {
        MessageBox.Show(theDialog.FileName.ToString());
    }
}

The text file I need to read is this (for homework, I need to read this exact file), It has an employee number, name, address, wage, and hours worked:

1
John Merryweather
123 West Main Street
5.00 30

In the text file I was given, there are 4 more employees with info immediately after this in the same format. You can see that the employee wage and hours are on the same line, not a typo.

I have an employee class here:

public class Employee
{
    //get and set properties for each 
    public int EmployeeNum { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public double Wage { get; set; }
    public double Hours { get; set; }

    public void employeeConst() //constructor method
    {
        EmployeeNum = 0;
        Name = "";
        Address = "";
        Wage = 0.0;
        Hours = 0.0;
    }

    //Method prologue
    //calculates employee earnings
    //parameters: 2 doubles, hours and wages
    //returns: a double, the calculated salary
    public static double calcSalary(double h, double w)
    {
        int OT = 40;
        double timeandahalf = 1.5;
        double FED = .20;
        double STATE = .075;
        double OThours = 0;
        double OTwage = 0;
        double OTpay = 0;
        double gross = 0; ;
        double net = 0;
        double net1 = 0;
        double net2 = 0;
        if (h > OT)
        {
            OThours = h - OT;
            OTwage = w * timeandahalf;
            OTpay = OThours * OTwage;
            gross = w * h;
            net = gross + OTpay;
        }
        else
        {
            net = w * h;
        }

        net1 = net * FED; //the net after federal taxes
        net2 = net * STATE; // the net after state taxes

        net = net - (net1 + net2);
        return net; //total net
    }
}

So I need to pull the text from that file into my Employee class, then output the data to the correct textbox in the windows forms application. I am having trouble understanding how to do this right. Do I need to use a streamreader? Or is there another, better way in this instance? Thank you.

C# OpenFileDialog

C# OpenFileDialog control allows us to browse and select files on a computer in an application. A typical Open File Dialog looks like Figure 1 where you can see Windows Explorer like features to navigate through folders and select a file.

OpenFileDialog In C#

Figure 1 

Creating a OpenFileDialog

We can create an OpenFileDialog control using a Forms designer at design-time or using the OpenFileDialog class in code at run-time (also known as dynamically). Unlike other Windows Forms controls, an OpenFileDialog does not have and not need visual properties like others. The only purpose of OpenFileDialog to display available colors, create custom colors and select a color from these colors. Once a color is selected, we need that color in our code so we can apply it on other controls.

Again, you can create an OpenFileDialog at design-time but it is easier to create an OpenFileDialog at run-time.

Design-time

To create an OpenFileDialog control at design-time, you simply drag and drop an OpenFileDialog control from Toolbox to a Form in Visual Studio. After you drag and drop an OpenFileDialog on a Form, the OpenFileDialog looks like Figure 2.

OpenFileDialog In C#

Figure 2 

Adding an OpenFileDialog to a Form adds following two lines of code.

  1. private System.Windows.Forms.OpenFileDialog openFileDialog1;  
  2. this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();  

Run-time

Creating a OpenFileDialog control at run-time is merely a work of creating an instance of OpenFileDialog class, set its properties and add OpenFileDialog class to the Form controls.

First step to create a dynamic OpenFileDialog is to create an instance of OpenFileDialog class. The following code snippet creates an OpenFileDialog control object.

  1. OpenFileDialog openFileDialog1 = new OpenFileDialog();  

ShowDialog method displays the OpenFileDialog.

  1. openFileDialog1.ShowDialog();  

Once the ShowDialog method is called, you can browse and select a file.

Setting OpenFileDialog Properties

After you place an OpenFileDialog control on a Form, the next step is to set properties.

The easiest way to set properties is from the Properties Window. You can open Properties window by pressing F4 or right click on a control and select Properties menu item. The Properties window looks like Figure 3.

OpenFileDialog In C#

Figure 3 

Initial and Restore Directories

InitialDirectory property represents the directory to be displayed when the open file dialog appears first time.

  1. openFileDialog1.InitialDirectory = @«C:»;  

If RestoreDirectory property set to true that means the open file dialogg box restores the current directory before closing.

  1. openFileDialog1.RestoreDirectory = true;  

Title

Title property is used to set or get the title of the open file dialog.

  1. openFileDialog1.Title = «Browse Text Files»;  

Default Extension

DefaultExtn property represents the default file name extension.

  1. openFileDialog1.DefaultExt = «txt»;  

Filter and Filter Index

Filter property represents the filter on an open file dialog that is used to filter the type of files to be loaded during the browse option in an open file dialog. For example, if you need users to restrict to image files only, we can set Filter property to load image files only.

  1. openFileDialog1.Filter = «txt files (*.txt)|*.txt|All files (*.*)|*.*»;  

FilterIndex property represents the index of the filter currently selected in the file dialog box.

  1. openFileDialog1.FilterIndex = 2;  

Check File Exists and Check Path Exists

CheckFileExists property indicates whether the dialog box displays a warning if the user specifies a file name that does not exist. CheckPathExists property indicates whether the dialog box displays a warning if the user specifies a path that does not exist.

  1. openFileDialog1.CheckFileExists = true;  
  2. openFileDialog1.CheckPathExists = true;  

File Name and File Names

FileName property represents the file name selected in the open file dialog.

  1. textBox1.Text = openFileDialog1.FileName;  

If MultiSelect property is set to true that means the open file dialog box allows multiple file selection. The FileNames property represents all the files selected in the selection.

  1. this.openFileDialog1.Multiselect = true;  
  2. foreach (String file in openFileDialog1.FileNames)   
  3. {   
  4.   MessageBox.Show(file);  
  5. }  

Read Only Checked and Show Read Only Files

ReadOnlyChecked property represents whether the read-only checkbox is selected and ShowReadOnly property represents whether the read-only checkbox is available or not.

  1. openFileDialog1.ReadOnlyChecked = true;  
  2. openFileDialog1.ShowReadOnly = true;  

Implementing OpenFileDialog in a C# and WinForms Applications

Now let’s create a WinForms application that will use an OpenFileDialog that has two Button controls, a TextBox, and a container control. The Form looks like Figure 4.

OpenFileDialog In C#

Figure 4 

The Browse button click event handler will show an open file dialog and users will be able to select text files. The open file dialog looks like Figure 5.

OpenFileDialog In C#

Figure 5 

The following code snippet is the code for Browse button click event handler. Once a text file is selected, the name of the text file is displayed in the TextBox.

  1. private void BrowseButton_Click(object sender, EventArgs e)  
  2. {  
  3.     OpenFileDialog openFileDialog1 = new OpenFileDialog  
  4.     {  
  5.         InitialDirectory = @«D:»,  
  6.         Title = «Browse Text Files»,  
  7.   
  8.         CheckFileExists = true,  
  9.         CheckPathExists = true,  
  10.   
  11.         DefaultExt = «txt»,  
  12.         Filter = «txt files (*.txt)|*.txt»,  
  13.         FilterIndex = 2,  
  14.         RestoreDirectory = true,  
  15.   
  16.         ReadOnlyChecked = true,  
  17.         ShowReadOnly = true  
  18.     };  
  19.   
  20.     if (openFileDialog1.ShowDialog() == DialogResult.OK)  
  21.     {  
  22.         textBox1.Text = openFileDialog1.FileName;  
  23.     }  
  24. }  

The code for Browse Multiple Files button click event handler looks like following.

  1. private void BrowseMultipleButton_Click(object sender, EventArgs e)  
  2. {  
  3.     this.openFileDialog1.Filter =  
  4. «Images (*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF|» +  
  5. «All files (*.*)|*.*»;  
  6.   
  7.     this.openFileDialog1.Multiselect = true;  
  8.     this.openFileDialog1.Title = «Select Photos»;  
  9.   
  10.     DialogResult dr = this.openFileDialog1.ShowDialog();  
  11.     if (dr == System.Windows.Forms.DialogResult.OK)  
  12.     {  
  13.         foreach (String file in openFileDialog1.FileNames)  
  14.         {  
  15.             try  
  16.             {  
  17.                 PictureBox imageControl = new PictureBox();  
  18.                 imageControl.Height = 400;  
  19.                 imageControl.Width = 400;  
  20.   
  21.                 Image.GetThumbnailImageAbort myCallback =  
  22.                         new Image.GetThumbnailImageAbort(ThumbnailCallback);  
  23.                 Bitmap myBitmap = new Bitmap(file);  
  24.                 Image myThumbnail = myBitmap.GetThumbnailImage(300, 300,  
  25.                     myCallback, IntPtr.Zero);  
  26.                 imageControl.Image = myThumbnail;  
  27.   
  28.                 PhotoGallary.Controls.Add(imageControl);  
  29.             }  
  30.             catch (Exception ex)  
  31.             {  
  32.                 MessageBox.Show(«Error: « + ex.Message);  
  33.             }  
  34.         }  
  35.     }  
  36. }  
  37. public bool ThumbnailCallback()  
  38. {  
  39.     return false;  
  40. }  

The output looks like Figure 6.

OpenFileDialog control in C#

Summary

An OpenFileDialog control allows users to launch Windows Open File Dialog and let them select files. In this article, we discussed how to use a Windows Open File Dialog and set its properties in a Windows Forms application. 

These are the best and most commonly used methods for writing to and reading from files:

using System.IO;

File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it. 
File.ReadAllText(sFilePathAndName);

The old way, which I was taught in college was to use stream reader/stream writer, but the File I/O methods are less clunky and require fewer lines of code. You can type in «File.» in your IDE (make sure you include the System.IO import statement) and see all the methods available. Below are example methods for reading/writing strings to/from text files (.txt.) using a Windows Forms App.

Append text to an existing file:

private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
    string sTextToAppend = txtMainUserInput.Text;
    //first, check to make sure that the user entered something in the text box.
    if (sTextToAppend == "" || sTextToAppend == null)
    {MessageBox.Show("You did not enter any text. Please try again");}
    else
    {
        string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a pathfilename.txt as string.
        if (sFilePathAndName == "" || sFilePathAndName == null)
        {
            //MessageBox.Show("You cancalled"); //DO NOTHING
        }
        else 
        {
            sTextToAppend = ("rn" + sTextToAppend);//create a new line for the new text
            File.AppendAllText(sFilePathAndName, sTextToAppend);
            string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\') + 1);
            MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
        }//end nested if/else
    }//end if/else

}//end method AppendTextToExistingFile_Click

Get file name from the user via file explorer/open file dialog (you will need this to select existing files).

private string getFileNameFromUser()//returns file pathname
{
    string sFileNameAndPath = "";
    OpenFileDialog fd = new OpenFileDialog();
    fd.Title = "Select file";
    fd.Filter = "TXT files|*.txt";
    fd.InitialDirectory = Environment.CurrentDirectory;
    if (fd.ShowDialog() == DialogResult.OK)
    {
        sFileNameAndPath = (fd.FileName.ToString());
    }
    return sFileNameAndPath;
}//end method getFileNameFromUser

Get text from an existing file:

private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
    string sFileNameAndPath = getFileNameFromUser();
    txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}

These are the best and most commonly used methods for writing to and reading from files:

using System.IO;

File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it. 
File.ReadAllText(sFilePathAndName);

The old way, which I was taught in college was to use stream reader/stream writer, but the File I/O methods are less clunky and require fewer lines of code. You can type in «File.» in your IDE (make sure you include the System.IO import statement) and see all the methods available. Below are example methods for reading/writing strings to/from text files (.txt.) using a Windows Forms App.

Append text to an existing file:

private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
    string sTextToAppend = txtMainUserInput.Text;
    //first, check to make sure that the user entered something in the text box.
    if (sTextToAppend == "" || sTextToAppend == null)
    {MessageBox.Show("You did not enter any text. Please try again");}
    else
    {
        string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a pathfilename.txt as string.
        if (sFilePathAndName == "" || sFilePathAndName == null)
        {
            //MessageBox.Show("You cancalled"); //DO NOTHING
        }
        else 
        {
            sTextToAppend = ("rn" + sTextToAppend);//create a new line for the new text
            File.AppendAllText(sFilePathAndName, sTextToAppend);
            string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\') + 1);
            MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
        }//end nested if/else
    }//end if/else

}//end method AppendTextToExistingFile_Click

Get file name from the user via file explorer/open file dialog (you will need this to select existing files).

private string getFileNameFromUser()//returns file pathname
{
    string sFileNameAndPath = "";
    OpenFileDialog fd = new OpenFileDialog();
    fd.Title = "Select file";
    fd.Filter = "TXT files|*.txt";
    fd.InitialDirectory = Environment.CurrentDirectory;
    if (fd.ShowDialog() == DialogResult.OK)
    {
        sFileNameAndPath = (fd.FileName.ToString());
    }
    return sFileNameAndPath;
}//end method getFileNameFromUser

Get text from an existing file:

private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
    string sFileNameAndPath = getFileNameFromUser();
    txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}

Содержание

  1. Использование visual C# для чтения и записи в текстовый файл
  2. Сводка
  3. Чтение текстового файла
  4. Написать текстовый файл (пример 1)
  5. Написать текстовый файл (пример 2)
  6. Полное перечисление кода для чтения текстового файла
  7. Полное перечисление кода для записи текстового файла (версия 1)
  8. Полное перечисление кода для записи текстового файла (версия 2)
  9. Устранение неполадок
  10. Open File Dialog Класс
  11. Определение
  12. Примеры
  13. Комментарии
  14. Конструкторы
  15. Свойства
  16. Методы
  17. События
  18. File Dialog Класс
  19. Определение
  20. Примеры
  21. Комментарии
  22. Свойства
  23. Методы
  24. События
  25. Работа с файлами в C#
  26. BestProg
  27. Разработка программы чтения и записи текстовых файлов. Классы StreamWriter и StreamReader
  28. Содержание
  29. Условие задачи
  30. Выполнение

Использование visual C# для чтения и записи в текстовый файл

В этой статье вы можете прочитать текстовое файл и написать его с помощью visual C#.

Оригинальная версия продукта: Visual Studio
Исходный номер КБ: 816149

Сводка

В разделе Чтение текстовых файлов этой статьи описывается, как использовать класс для чтения StreamReader текстового файла. Разделы Write a text file (пример 1) и разделы Write a text file (пример 2) описывают, как использовать класс для записи StreamWriter текста в файл.

Чтение текстового файла

Следующий код использует класс для открытия, чтения и закрытия StreamReader текстового файла. Вы можете передать путь текстового файла конструктору, чтобы StreamReader открыть его автоматически. Метод читает каждую строку текста и приращение указателя файла к следующей строке по ReadLine мере чтения. Когда метод достигает конца файла, он возвращает ReadLine ссылку null. Дополнительные сведения см. в группе StreamReader Class.

Создайте пример текстового файла в Блокнот. Выполните приведенные ниже действия.

Начните Microsoft Visual Studio.

В меню File указать на New, а затем выбрать Project.

Выберите visual C# проектов в Project типов, а затем выберите консольное приложение в шаблонах.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Нажмите КНОПКУ ВВОД, чтобы закрыть окно консоли. В окне Консоли отображается содержимое файла Sample.txt:

Написать текстовый файл (пример 1)

Следующий код использует класс для открытия, записи и закрытия StreamWriter текстового файла. Аналогично классу, вы можете передать путь текстового файла конструктору, чтобы открыть StreamReader StreamWriter его автоматически. Метод WriteLine записывает полную строку текста в текстовый файл.

Запустите Visual Studio.

В меню File указать на New, а затем выбрать Project.

Выберите visual C# проектов в Project типов, а затем выберите консольное приложение в шаблонах.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Этот код создает файл, которыйTest.txt на диске C. Open Test.txt в текстовом редакторе, например Блокнот. Test.txt содержит две строки текста:

Написать текстовый файл (пример 2)

Следующий код использует класс для открытия, записи и закрытия StreamWriter текстового файла. В отличие от предыдущего примера, этот код передает конструктору два дополнительных параметра. Первый параметр — путь к файлу и имя файла. Второй параметр true указывает, что файл открыт в режиме приложения. Если вы указываете для второго параметра, содержимое файла перезаписывается при каждом запуске false кода. Третий параметр Unicode указывает, чтобы StreamWriter кодировать файл в формате Unicode. Можно также указать следующие методы коди-кодинга для третьего параметра:

Метод похож на метод, за исключением того, что метод не автоматически встраит комбинацию символов возврата или строки Write WriteLine Write (CR/LF). Это полезно, когда нужно одновременно писать по одному символу.

Запустите Visual Studio.

В меню Файл выберите пункт Создать и затем пункт Проект.

Нажмите кнопку Visual C# проектов Project типов, а затем нажмите консольное приложение в шаблонах.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Этот код создает файл, которыйTest1.txt на диске C. Open Test1.txt в текстовом редакторе, например Блокнот. Test1.txt содержит одну строку текста: 0123456789.

Полное перечисление кода для чтения текстового файла

Полное перечисление кода для записи текстового файла (версия 1)

Полное перечисление кода для записи текстового файла (версия 2)

Устранение неполадок

Для всех манипуляций с файлами, это хорошая практика программирования, чтобы обернуть код в блок try-catch-finally для обработки ошибок и исключений. В частности, может потребоваться освободить ручки для файла в окончательном блоке, чтобы файл не был заблокирован на неопределенный срок. Некоторые возможные ошибки включают файл, который не существует, или файл, который уже используется.

Источник

Open File Dialog Класс

Определение

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Отображает диалоговое окно, позволяющее пользователю открыть файл. Этот класс не наследуется.

Примеры

Комментарии

Этот класс позволяет проверить, существует ли файл, и открыть его. ShowReadOnlyСвойство определяет, отображается ли флажок только для чтения в диалоговом окне. ReadOnlyCheckedСвойство указывает, установлен ли флажок только для чтения.

Большая часть основных функций для этого класса находится в FileDialog классе.

Если вы хотите предоставить пользователю возможность выбрать папку вместо файла, используйте FolderBrowserDialog вместо нее.

Конструкторы

Инициализирует экземпляр класса OpenFileDialog.

Свойства

Возвращает или задает значение, определяющее, добавляет ли автоматически диалоговое окно расширение к имени файла, если пользователь опускает данное расширение.

возвращает или задает значение, указывающее, должен ли этот FileDialog экземпляр автоматически обновлять внешний вид и поведение при работе в Windows Vista.

Возвращает значение, показывающее, может ли компонент вызывать событие.

Возвращает или задает значение, указывающее, отображается ли в диалоговом окне предупреждение, если пользователь указывает несуществующее имя файла.

Возвращает или задает значение, указывающее, отображает ли диалоговое окно предупреждение, если пользователь указывает несуществующий путь.

Получает или задает GUID, связываемый с этим состоянием диалога. Как правило, состояние, такое как последняя посещенная папка, а также расположение и размер диалогового окна, сохраняется с учетом имени исполняемого файла. При указании GUID приложение может иметь разные сохраняемые состояния для разных версий диалогового окна в том же приложении (например, диалоговое окно импорта и диалоговое окно открытия).

Возвращает объект IContainer, который содержит коллекцию Component.

Получает коллекцию пользовательских размещений для этого экземпляра FileDialog.

Возвращает или задает расширение имени файла по умолчанию.

Возвращает или задает значение, указывающее, возвращает ли диалоговое окно расположение файла, представленного ярлыком, или возвращает расположение самого ярлыка (.lnk).

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

Возвращает или задает строку, содержащую имя файла, выбранного в диалоговом окне.

Возвращает имена всех выбранных файлов в диалоговом окне.

Возвращает или задает текущую строку фильтра имен файлов, которая определяет варианты, доступные в поле диалогового окна «Сохранить как файл типа» или «Файлы типа».

Возвращает или задает индекс фильтра, выбранного в настоящий момент в диалоговом окне файла.

Возвращает или задает начальную папку, отображенную диалоговым окном файла.

Возвращает дескриптор экземпляра обработчика Win32 для приложения.

Получает или задает значение, указывающее, можно ли в диалоговом окне выбирать несколько файлов.

Получает значения для инициализации класса FileDialog.

Получает или задает значение, указывающее, установлен ли флажок доступности только для чтения.

Получает или задает значение, указывающее, восстанавливает ли диалоговое окно ранее выбранный каталог в качестве текущего каталога перед закрытием.

Возвращает имя и расширение файла, выбранного в диалоговом окне. Имя файла не включает сведения о пути.

Возвращает массив имен и расширений файлов для всех выбранных в диалоговом окне файлов. Имена файлов не включают сведений о пути.

Возвращает или задает значение, определяющее, отображается ли кнопка Справка в диалоговом окне работы с файлами.

Получает или задает значение, указывающее, имеется ли в диалоговом окне флажок «доступно только для чтения».

Получает или задает ISite объекта Component.

Возвращает или задает значение, определяющее, поддерживает ли диалоговое окно отображение и сохранение файлов, которые содержат несколько расширений имени.

Получает или задает объект, содержащий данные элемента управления.

Возвращает или задает заголовок диалогового окна файла.

Возвращает или задает значение, указывающее, принимает ли диалоговое окно только допустимые имена файлов Win32.

Методы

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.

Определяет, равен ли указанный объект текущему объекту.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает объект Type для текущего экземпляра.

Определяет процедуру обработки общего диалогового окна, переопределенную, чтобы добавить специальные функции в диалоговое окно файла.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

Открывает выбранный пользователем файл в режиме «только чтение». Файл задается свойством FileName.

Определяет процедуру окна-владельца, которая переопределяется, чтобы добавить специальные функции для общего диалогового окна.

Восстанавливает заданные по умолчанию значения всех свойств.

Указывает общее диалоговое окно.

Запускает общее диалоговое окно с заданным по умолчанию владельцем.

Запускает общее диалоговое окно с указанным владельцем.

Представляет строковую версию этого объекта.

События

Возникает при удалении компонента путем вызова метода Dispose().

Происходит при нажатии пользователем кнопки Открыть или Сохранить в диалоговом окне файла.

Происходит при нажатии пользователем кнопки справки в общем диалоговом окне.

Источник

File Dialog Класс

Определение

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Отображает диалоговое окно, с помощью которого пользователь может выбрать файл.

Примеры

Комментарии

FileDialog является модальным диалоговым окном; Таким образом, если он показан, он блокирует остальную часть приложения, пока пользователь не выберет файл. При отображении диалогового окна в модальном режиме входные данные (нажатие клавиши или мыши) не могут быть выполнены, за исключением объектов в диалоговом окне. Программа должна скрыть или закрыть диалоговое окно (обычно в ответ на какое-либо действие пользователя), прежде чем может произойти ввод в вызывающую программу.

В зависимости от типа приложения, способа хранения данных, связанных с приложением, и причины доступа к файловой системе существует множество способов, с помощью которых можно создать путь к каталогу. В следующей таблице показаны методы динамического создания путей.

GetTempPathМетод System.IO.Path возвращает путь к временной папке.

GetCurrentDirectoryМетод System.IO.Directory класса возвращает текущий выполняемый каталог приложения.

Обратите внимание, что полный путь может быть построен с использованием одного или нескольких описанных методов. Например, GetFolderPath метод может использоваться для получения пути к папке MyDocuments, а затем можно использовать параметр приложения для добавления относительного подкаталога.

System.IO.PathКласс содержит статические члены, помогающие манипулировать абсолютными и относительными путями, тогда System.IO.File как System.IO.Directory классы и имеют статические члены, которые фактически управляют файлами и каталогами соответственно.

Является владельцем событием FileOk.

Свойства

Возвращает или задает значение, определяющее, добавляет ли автоматически диалоговое окно расширение к имени файла, если пользователь опускает данное расширение.

возвращает или задает значение, указывающее, должен ли этот FileDialog экземпляр автоматически обновлять внешний вид и поведение при работе в Windows Vista.

Возвращает значение, показывающее, может ли компонент вызывать событие.

Возвращает или задает значение, указывающее, отображается ли в диалоговом окне предупреждение, если пользователь указывает несуществующее имя файла.

Возвращает или задает значение, указывающее, отображает ли диалоговое окно предупреждение, если пользователь указывает несуществующий путь.

Получает или задает GUID, связываемый с этим состоянием диалога. Как правило, состояние, такое как последняя посещенная папка, а также расположение и размер диалогового окна, сохраняется с учетом имени исполняемого файла. При указании GUID приложение может иметь разные сохраняемые состояния для разных версий диалогового окна в том же приложении (например, диалоговое окно импорта и диалоговое окно открытия).

Возвращает объект IContainer, который содержит коллекцию Component.

Получает коллекцию пользовательских размещений для этого экземпляра FileDialog.

Возвращает или задает расширение имени файла по умолчанию.

Возвращает или задает значение, указывающее, возвращает ли диалоговое окно расположение файла, представленного ярлыком, или возвращает расположение самого ярлыка (.lnk).

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

Возвращает или задает строку, содержащую имя файла, выбранного в диалоговом окне.

Возвращает имена всех выбранных файлов в диалоговом окне.

Возвращает или задает текущую строку фильтра имен файлов, которая определяет варианты, доступные в поле диалогового окна «Сохранить как файл типа» или «Файлы типа».

Возвращает или задает индекс фильтра, выбранного в настоящий момент в диалоговом окне файла.

Возвращает или задает начальную папку, отображенную диалоговым окном файла.

Возвращает дескриптор экземпляра обработчика Win32 для приложения.

Получает значения для инициализации класса FileDialog.

Получает или задает значение, указывающее, восстанавливает ли диалоговое окно ранее выбранный каталог в качестве текущего каталога перед закрытием.

Возвращает или задает значение, определяющее, отображается ли кнопка Справка в диалоговом окне работы с файлами.

Получает или задает ISite объекта Component.

Возвращает или задает значение, определяющее, поддерживает ли диалоговое окно отображение и сохранение файлов, которые содержат несколько расширений имени.

Получает или задает объект, содержащий данные элемента управления.

Возвращает или задает заголовок диалогового окна файла.

Возвращает или задает значение, указывающее, принимает ли диалоговое окно только допустимые имена файлов Win32.

Методы

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.

Определяет, равен ли указанный объект текущему объекту.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает объект Type для текущего экземпляра.

Определяет процедуру обработки общего диалогового окна, переопределенную, чтобы добавить специальные функции в диалоговое окно файла.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

Определяет процедуру окна-владельца, которая переопределяется, чтобы добавить специальные функции для общего диалогового окна.

Восстанавливает заданные по умолчанию значения всех свойств.

Указывает общее диалоговое окно.

Запускает общее диалоговое окно с заданным по умолчанию владельцем.

Запускает общее диалоговое окно с указанным владельцем.

Представляет строковую версию этого объекта.

События

Возникает при удалении компонента путем вызова метода Dispose().

Происходит при нажатии пользователем кнопки Открыть или Сохранить в диалоговом окне файла.

Происходит при нажатии пользователем кнопки справки в общем диалоговом окне.

Источник

Работа с файлами в C#

rabota s failami c

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали немного о том, что такое модульное тестирование в Visual Studio. В данной статье я бы хотел рассказать о работе с файлами на C#. Всю работу с файлами можно разделить на 2 группы: 1) это работа с файлами, как с элементами файловой системы, например, найти файл, получить список файлов в директории, узнать дату изменения файла, различные его атрибуты, расширение, скопировать или удалить файл, создать новый. 2) это работа с содержимым файла: прочитать файл или записать в него что-нибудь.

Для выполнения всех этих операций существует несколько классов, расположенных в пространстве имён «System.IO».

Существует 2 класса File и FileInfo, которые предназначены для работы с файлом, как с частью файловой системы. Здесь также есть несколько методов, которые позволяют работать с содержимым файла целиком. В простых случаях (когда размеры файла небольшие, скажем до 1МБ) файл можно полностью прочитать и сохранить в память.

Некоторые методы по работе с файлами:

Ниже приведен пример на эти методы. Для начала подготовим тестовый файл, который заполним названиями городов (Москва, Питер, Казань, Уфа, Стерлитамак). Имя каждого города находится на новой строке. Файл назовем «cities.txt» и расположим его в корне какого-нибудь диска (в моём случае — это диск «E»):

То, что можно сделать с помощью класса «File», можно сделать и с помощью класса «FileInfo», и наоборот. Почему же их два? Методы класса «File» — статические, а методы класса «FileInfo» являются методами объекта. При работе с методами класса «File» первым параметром всегда указывается путь до файла. В случае «FileInfo» — это имя указывается один раз в конструкторе при создании объекта. Если нужно выполнить разовую операцию, то лучше использовать класс «File». В случае работы со многими файлами лучше использовать «FileInfo».

Реализуем следующий алгоритм: необходимо вывести все файлы, даты изменения которых старше введенной пользователем даты. Будем рассматривать папку «C:WindowsSystem32». В ней много файлов. Тут нам потребуется получить все файлы этой директории. Забегая вперед скажу, что это можно сделать с помощью метода «GetFiles()» класса «DirectoryInfo».

Протестируйте работу данного скрипта.

Напишем ещё несколько примеров на работу с файлами:

В качестве домашнего задания: переделайте последний пример только с использованием класса «FileInfo».

В данной статье вы узнали, как работать с файлами в C#.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.

Источник

BestProg

Разработка программы чтения и записи текстовых файлов. Классы StreamWriter и StreamReader

В программе продемонстрировано использование классов StreamWriter и StreamReader для чтения и записи текстовых файлов. Также в программе использованы элементы управления (компоненты) RichTextBox и OpenFileDialog.

Содержание

Поиск на других ресурсах:

Условие задачи

Разработать программу чтения/записи текстовых файлов. В программе должна быть возможность выбора файла для чтения, его корректировка и запись этого файла на диск.

Выполнение

1. Запустить MS Visual Studio. Создать проект по шаблону Windows Forms Application

2. Разработка формы приложения

Создать форму как показано на рисунке 1.

На форме размещаются следующие элементы управления:

02 02 00 012 01Рис. 1. Элементы управления формы приложения

Осуществить настройку элементов управления типа Button следующим образом:

Настройка формы приложения Form1:

Также нужно откорректировать размеры формы и элементов управления на форме приблизительно так, как показано на рисунке 2.

В элементе управления RichTextBox (рис. 3):

Элемент управления RichTextBox представляет собой многострочное редактированное текстовое поле, которое работает с текстом в формате RTF ( Rich Text Format – расширенный текстовый формат). Текст формата RTF сохраняет дополнительную служебную информацию, которая управляет свойствами каждого абзаца и изменением шрифта по ходу текста.

02 02 00 012 02rРис. 2. Форма приложения после корректировки и настройки свойств

02 02 00 012 03r 3

Рис. 3. Элемент управления типа RichTextBox

3. Элемент управления OpenFileDialog

Для того, чтобы выбрать текстовый файл для чтения, нужно использовать элемент управления типа OpenFileDialog. Этот элемент управления представляет собой стандартное диалоговое окно Windows, предназначенное для открытия файлов.

Разместить на форме компонент OpenFileDialog (рис. 4).

02 02 00 012 04rРис. 4. Элемент управления OpenFileDialog

4. Добавление внутренних переменных в текст приложения

Для работы программы нужно ввести следующие дополнительные внутренние переменные:

Поэтому, в текст модуля “ Form1.cs ” нужно ввести следующий код:

5. Программирование события Load класса формы Form1

Событие Load возникает в момент загрузки формы сразу после запуска приложения на выполнение. В обработчик события целесообразно включать начальную инициализацию переменных.

В данном случае, начальной инициализации подлежат такие переменные и объекты как f_open, f_save, label1, richTextBox1.

В компоненте label1 будет отображаться путь к выбранному файлу. В компоненте richTextBox1 будет отображаться содержимое (текст) выбранного файла.

Листинг обработчика Form1_Load() события Load загрузки формы следующий:

6. Импорт пространства имен System.IO

Поэтому, для использования методов этих классов, нужно в начале кода модуля “ Form1.c s” добавить строку:

Таким образом, верхняя часть файла “ Form1.cs ” имеет вид:

7. Программирование события клика на кнопке button1 (“ Открыть файл… »)

Листинг обработчика button1_Click() события Click кнопки button1, осуществляющей открытие окна выбора файла, следующий:

Для вызова стандартного окна Windows выбора файла используется метод ShowDialog() компонента openFileDialog1. Выбранный файл сохраняется в свойства FileName объекта openFileDialog.

Для чтения текстового файла используется класс StreamReader, который осуществляет чтение символьных данных из файла. Чтобы создать экземпляр класса StreamReader используется метод OpenText() класса File. Класс File содержит ряд методов, которые хорошо подходят для упрощенного чтения символьных данных.

Чтобы считать строку из файла в программе используется метод ReadLine(), считывающий строку символов из текущего потока и возвращающий данные в виде строки. Если достигнут конец файла, то метод возвращает null.

Чтение строк осуществляется в локальную переменную line.

Чтобы добавить строку к объекту richTextBox1, используется метод AppendText().

8. Программирование события изменения текста в компоненте RichTextEdit

В соответствии с логикой программы, если в тексте файла происходят изменения, то флажок f_save должен быть равен значению false.

В компоненте richTextBox1 есть событие TextChanged, которое вызывается в момент изменения текста в редакторе (рис. 5).

02 02 00 012 05rРис. 5. Событие TextChanged элемента управления richTextBox1

Обработчик события TextChanged имеет следующий вид:

9. Программирование события клика на кнопке “ Сохранить файл ”

Для сохранения измененного текста в файле нужно выбрать команду « Сохранить файл » (кнопка button2). Для сохранения измененного в richTextBox1 файла используются методы класса StreamWriter.

Листинг обработчика события клика на кнопке button2 следующий:

Объясним некоторые фрагменты кода.

В обработчике события button2_Click после проверки на наличие открытого файла создается объект (переменная) с именем sw типа StreamWriter.

Для доступа к введенным строкам компонента richTextBox используется свойство Lines, которое есть массивом строк.

Чтобы добавить одну строку, нужно вызвать метод WriteLine() объекта sw типа StreamWriter.

Источник

Понравилась статья? Поделить с друзьями:
  • Работает только один наушник на компьютер windows 10 bluetooth
  • Работа с утилитами в операционной системе windows
  • Работает только левый наушник windows 10
  • Работа с устройствами в системе windows
  • Работает только классическая тема windows 7