Создать файл в windows forms

Обновлено: 05.07.2024

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

Содержание

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

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

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

Выполнение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 (“ Открыть файл… »)

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

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

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

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

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

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

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

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

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

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

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

Создает или перезаписывает файл в указанном пути.

Перегрузки

Создает или перезаписывает файл в указанном пути.

Создает или перезаписывает файл по заданному пути с указанием размер буфера.

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

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

Create(String)

Создает или перезаписывает файл в указанном пути.

Параметры

Путь и имя создаваемого файла.

Возвращаемое значение

FileStream, обеспечивающий доступ для чтения и записи к файлу, указанному в path .

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

-или- Параметр path указывает файл, доступный только для чтения.

-или- path указывает файл, который скрыт.

path имеет значение null .

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

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Ошибка ввода-вывода при создании файла.

Параметр path задан в недопустимом формате.

Примеры

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

Комментарии

FileStreamОбъект, созданный этим методом, имеет значение по умолчанию FileShare None ; никакие другие процессы или код не могут получить доступ к созданному файлу, пока не будет закрыт исходный маркер файла.

Этот метод эквивалентен Create(String, Int32) перегрузке метода, используя размер буфера по умолчанию 4 096 байт.

path Параметр может указывать сведения относительного или абсолютного пути. Сведения об относительном пути интерпретируется как относительно текущего рабочего каталога. Сведения о получении текущего рабочего каталога см. в разделе GetCurrentDirectory .

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

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

Я пытаюсь создать текстовый файл в своем приложении Windows Forms. Он работает нормально, но создает текстовый файл в расположении приложения по умолчанию (например, в папке bin ). Но я хочу сохранить этот созданный текстовый файл в папке с пользовательскими файлами. Как я могу это сделать?

Вы можете использовать Environment.GetFolderPath для получения пути к папке с данными пользователя:

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

Вы можете использовать функцию Environment.GetFolderPath () вместе с Environment .SpecialFolder перечисление.

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


27.3k2121 золотых знака9393 серебряных знака123123 бронзовых знака

Функцию Environment.GetFolderPath () можно использовать вместе с перечислением Environment.SpecialFolder .

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

Вы можете использовать Environment.SpecialFolder для создания пути к файлу, который указывает на мои документы:


Вы можете использовать Environment.SpecialFolder для создания пути к файлу, который указывает на мой документы:


String path = Environment.GetFolderPath ( Environment.SpecialFolder.Personal);

309k7676 золотых знаков633633 серебряных знака647647 бронзовых знаков

String path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

Затем вы должны сделать что-то вроде:

Однако при использовании этого подхода вы можете столкнуться с проблемами с разрешениями, обычно лучше хранить такие вещи, как это либо в реестре, либо в каталоге AppData.

Затем вы должны сделать что-то вроде:

Однако при использовании этого подхода вы можете столкнуться с проблемами с разрешениями, обычно лучше хранить такие вещи, как это либо в реестре, либо в каталоге AppData.

Для начала создадим проект.

Откроем Visual Studio, далее жмем Файл→Создать→Проект, далее выбираем пункт CLR и отмечаем Приложение Windows Forms, даем имя проекта, к примеру factr и жмем Ok.

После того как мы создали проект, должна появиться пустая форма, которая должна выглядеть примерно так:

Справа должна появиться панель элементов, если ее нет, то можно включить ее в меню Вид→Панель Элементов или нажатием горячих клавиш — Ctrl + Alt + X.

На ней расположены различные элементы для вставки в форму, нам понадобятся только элементы Button (Кнопка), Label (Надпись) и TextBox (Текстовое поле). Перетащите на форму три элемента Label, Два элемента TextBox, и одну кнопку (Button), расставьте элементы примерно так:

Теперь нам нужно будет изменить текст надписей для элементов Label и Button и Задать подходящие имена классов для элементов TextBox. Для этого Выделите элемент label1, перейдите в Панель свойств, (обычно она находится под Панелью элементов, если панель выключена, включите ее в меню Вид -> Диспетчер свойств.) и задайте для данного элемента значение атрибута Text как показано на рисунке.

Задайте атрибут Text для всех элементов Label и Кнопки Button аналогичным образом. Наша форма должна принять примерно следующий вид:

Я сделал кнопку развернуть неактивной, так как изменение размеров данной формы испортит ее внешний вид, Вы также можете это сделать, щелкнув левой кнопкой мыши на пустом месте формы и в Панели свойств задать для атрибута MaximizeBox параметр False.

Теперь задайте для текстовых полей (TextBox) Атрибуты Name в Панели Свойств – для первого поля это будет num1, а для второго, соответственно num2. Тем самым мы изменили имена классов для полей TextBox, чуть позднее Вы поймете зачем.

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

Первым делом нужно добавить заголовочный файл fact.h в проект, для этого щелкаем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – fact.h и нажимаем Добавить. В данном файле будет содержаться прототип функции для вычисления факториала. Добавляем туда следующий исходный код.

Теперь наш заголовочный файл подключен к проекту, далее аналогичным образом создаем файл исходного кода fact.cpp в проект.

В него добавляем саму функцию вычисления факториала целого числа.

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

Открываем файл Form.h, в нем мы видим визуальное представление нашей формы. Щелкаем двойным щелчком на кнопке Button и переходим к исходному коду.

После фигурной скобки ставим абзац и приступаем к кодированию. Любой набор символов, которые мы вводим с клавиатуры в текстовое поле программы является строкой, поэтому нам нужно вытащить значение из текстового поля и привести его к целочисленному типу. Это довольно сложная процедура, но, к счастью в языке C++ уже есть множество функций, выполняющих конвертирование типов данных. Сначала нам необходимо описать и инициализировать переменную, в которой будет храниться значение числа, для которого должен быть вычислен факториал. Добавим в том место, где Вы поставили абзац следующий код:

Эта строка инициализирует переменную, которая хранит в себе число для вычисления его факториала. Далее нам нужно будет произвести вызов нашей функции fact с переменной number в качестве единственного аргумента и занести результат работы функции в новую переменную factor.

И затем преобразовать полученное значение обратно в строку и присвоить его второму текстовому полю.

Таким образом, наш простой обработчик событий будет выглядеть вот так:

Теперь можно скомпилировать и запустить готовую программу и проверить ее. Помните, что тип double в С++ может хранить число не превышающее !170.

Результат работы программы можно проверить в инженерном калькуляторе Windows.

Я пытаюсь создать текстовый файл в своем приложении Windows Forms. Он работает нормально, но создает текстовый файл в расположении приложения по умолчанию (например, в папке bin ). Но я хочу сохранить этот созданный текстовый файл в папке с пользовательскими файлами. Как я могу это сделать?

Вы можете использовать Environment.GetFolderPath для получения пути к папке с данными пользователя:

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

Вы можете использовать функцию Environment.GetFolderPath () вместе с Environment .SpecialFolder перечисление.

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


27.3k2121 золотых знака9393 серебряных знака123123 бронзовых знака

Функцию Environment.GetFolderPath () можно использовать вместе с перечислением Environment.SpecialFolder .

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

Вы можете использовать Environment.SpecialFolder для создания пути к файлу, который указывает на мои документы:


Вы можете использовать Environment.SpecialFolder для создания пути к файлу, который указывает на мой документы:


String path = Environment.GetFolderPath ( Environment.SpecialFolder.Personal);

309k7676 золотых знаков633633 серебряных знака647647 бронзовых знаков

String path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

Затем вы должны сделать что-то вроде:

Однако при использовании этого подхода вы можете столкнуться с проблемами с разрешениями, обычно лучше хранить такие вещи, как это либо в реестре, либо в каталоге AppData.

Затем вы должны сделать что-то вроде:

Однако при использовании этого подхода вы можете столкнуться с проблемами с разрешениями, обычно лучше хранить такие вещи, как это либо в реестре, либо в каталоге AppData.

Читайте также: