Как создать программу которая будет открывать файлы

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

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

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

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

Выполнение

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

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

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

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

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

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

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

Как открыть файл с расширением py в Python IDLE 3.10 ?

Рис. 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

Как создать bat файл в Windows

Рис. 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# .

Читайте также:
Signal мессенджер как пользоваться программой

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

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

Источник: www.bestprog.net

Как создать программу которая будет открывать файлы

Создание игр на Unreal Engine 5

Создание игр на Unreal Engine 5

Пишем читалку электронных книг на Android с помощью FBReader SDK

Android Tools

В настоящее время наиболее популярными и удобными способами чтения являются электронные книги. Их можно взять с собой куда угодно, они экономят бумагу, отображение текста в них можно настраивать так, как удобно читателю. По этим причинам появилось множество форматов электронных книг, основные из которых это EPUB, FB2 и MOBI. Всем известные DOC и TXT тоже являются форматами электронных книг, однако их возможности по сравнению с вышеуказанными весьма ограничены. У каждого из форматов есть свои преимущества, однако наиболее часто используемыми являются EPUB и FB2, причём второй популярен только у нас в России.

Одной из особенностей этих форматов является то, что для них нужна специальная программа, которая может работать с конкретным форматом. Поэтому в App Store или Google Play можно найти большое количество разнообразных читалок под все известные форматы. В этой статье мы попробуем написать свою собственную читалку электронных книг. Для этой цели мы воспользуемся специальной SDK от разработчиков FBReader, который доступен по следующей ссылке.

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

  • Открытие любых файлов электронных книг (ePub, fb2, mobi, и так далее)
  • Чтение метаданных из файла книги
  • Особенности движка FBReader
  • Возможность менять стиль текста книги

Кроме того, библиотека предоставляет и различные дополнительные возможности для реализации в приложениях, такие как:

  • Выделение текста
  • Закладки
  • Поиск по тексту
  • Оглавление
  • Дополнительная навигация по тексту
  • Поддержка сносок и гиперссылок
  • Настройка яркости

Отдельно стоит отметить, что, хоть FBReader SDK и можно скачать с сайта бесплатно, после встраивания в приложение она будет работать в демо-режиме, который имеет полный функционал, но показывает только несколько первых страниц книги. Для того, чтобы получить полную версию библиотеки, нужно купить её на сайте разработчика и, следуя инструкциям, получить специальный ключ SDK, который затем добавляется в приложение.

В этой статье мы рассмотрим, как на основе FBReader SDK создать свою собственную читалку электронных книг и посмотрим её возможности.

Начнём с добавления SDK в свой проект. Для этого создадим новый проект с пустой активностью. В качестве минимального API укажем API 16.

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

allprojects < repositories < . maven url «https://sdk.fbreader.org/maven» > > >

Затем в файле build.gradle модуля приложения добавим зависимости с библиотеками в блок dependencies.

dependencies < . implementation ‘com.googlecode.json-simple:json-simple:1.1’ implementation ‘org.fbreader:book:1.0.0-rc01’ implementation ‘org.fbreader:config_client:1.0.0-rc01’ implementation ‘org.fbreader:config_provider:1.0.0-rc01’ implementation ‘org.fbreader:filesystem:1.0.0-rc01’ implementation ‘org.fbreader:fontentry:1.0.0-rc01’ implementation ‘org.fbreader:format_interface:1.0.0-rc01’ implementation ‘org.fbreader:image:1.0.0-rc01’ implementation ‘org.fbreader:intent:1.0.0-rc01’ implementation ‘org.fbreader:language:1.0.0-rc01’ implementation ‘org.fbreader:loader:1.0.0-rc01’ implementation ‘org.fbreader:options:1.0.0-rc01’ implementation ‘org.fbreader:text_client:1.0.0-rc01’ implementation ‘org.fbreader:text_provider:1.0.0-rc01’ implementation ‘org.fbreader:text_util:1.0.0-rc01’ implementation ‘org.fbreader:text_view:1.0.0-rc01’ implementation ‘org.fbreader:toc:1.0.0-rc01’ implementation ‘org.fbreader:util:1.0.0-rc01’ implementation ‘org.fbreader:view:1.0.0-rc01’ implementation ‘org.fbreader:vimgadgets:1.0.0-rc01’ implementation ‘org.fbreader:zip-amse:1.0.0-rc01’ >

Как вы можете заметить, здесь также присутствует библиотека «com.googlecode.json-simple:json-simple:1.1». Она пригодится чуть позже для работы с JSON-файлами.

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

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

Читайте также:
Перечень инструкций и программ инструктажей

android < . compileOptions sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 > >

На сайте SDK разработчики также предоставляют исходный код различных компонентов, которые упрощают реализацию интерфейса. Скачаем его и добавим в проект. Для этого перенесём оттуда папку fbreader в папку своего проекта. После этого в файле settings.gradle пропишем эту папку и пути до нужных модулей.

include ‘fbreader_extras’ project(‘:fbreader_extras’).projectDir = new File(‘fbreader/extras’) include ‘fbreader_styles’ project(‘:fbreader_styles’).projectDir = new File(‘fbreader/styles’) include ‘fbreader_text_extras’ project(‘:fbreader_text_extras’).projectDir = new File(‘fbreader/text_extras’)

Теперь добавим зависимости с ними в файле build.gradle модуля приложения.

dependencies < . implementation project(‘:fbreader_extras’) implementation project(‘:fbreader_styles’) implementation project(‘:fbreader_text_extras’) >

Когда IDE пересоберёт проект, мы увидим добавленные модули в списке слева.

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

Начнём с разметки. Для MainActivity добавим на экран компонент RecyclerView, который будет содержать собственно список файлов. Для этого добавим в файл layout/activity_main.xml следующий код.

Теперь инициализируем этот объект в коде активности. Откроем файл MainActivity.java и добавим следующий код.

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

Начиная с API 23 это разрешение необходимо запрашивать у пользователя в рантайме. Для этого при запуске приложения будем проверять версию Android на устройстве и при необходимости отправлять пользователю запрос на получение разрешения.

Получить результат запроса можно, переопределив метод активности onRequestPermissionResult(). Если разрешение приложению было предоставлено, продолжаем дальнейшую работу.

В методе generateList() мы будем искать нужные файлы на устройстве и отображать их в списке приложения. Для этого создадим AsyncTask, который будет выполнять всю работу в отдельном потоке и возвращать готовый список с найденными файлами. Добавим следующий код в MainActivity.

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

Теперь нам нужен адаптер, в который мы будем загружать список. Добавим разметку для элемента списка, для этого создадим файл layout/file_list_item.xml и добавим в него следующий код.

Теперь создадим класс BooksAdapter, который будет наследовать от RecyclerView.Adapter<>. В нём нам нужно инициализировать элементы списка, загружая в них пути и имена файлов электронных книг. Таким образом, код адаптера будет выглядеть следующим образом.

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

Вернёмся в главную активность. В методе generateList() мы запускаем AsyncTask и привязываем к нему слушатель, который должен вызывать метод onTaskCompleted() при завершении работы. В этом методе нам нужно составить список, отсортировать его по имени и передать в адаптер. Добавим сюда следующий код:

Теперь, запустив приложение, мы можем увидеть список файлов электронных книг, которые есть на устройстве.

Однако нам нужно этот файл открыть и прочитать, в этом нам и поможет FBReader SDK. Создадим новую активность, назовём её ReaderActivity. Теперь из скачанного исходного кода нам понадобится несколько классов. Откроем в папке с исходным кодом samples/extensions/src/main и скопируем себе в проект целиком папку res, за исключением res/layout/main.xml, и из java/org/fbreader/sample/extensions скопируем все классы, кроме MainActivity.java. Эти классы содержат готовые компоненты, которые помогут нам в создании читалки, при желании их можно модифицировать в соответствии с потребностями.

Теперь откроем layout/reader_activity.xml и добавим в него следующий код разметки.

TextWidgetExt является обёрткой класса библиотеки TextWidget, этот класс является основным и именно он отображает содержимое книги.

Инициализируем теперь эти объекты в коде активности ReaderActivity.java.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru