000150. Подключаем dll-библиотеку, работа с файлами
Last updated
Last updated
Подключаем dll-библиотеку, работа с файлами||wmysterio|wmysterio|wmysterio@yandex.ru|/||Всем хай! Мы продолжаем делать наш браузер, и сегодня нам предстоит сделать Лог последних посещаемых сайтов. Для этого удобнее будет использовать специальную библиотеку классов, которая будет выполнять действия, связанных с Лог'ом. Создадим новый проект в диспетчере проектов. Для этого выделите текущий проект, ПКМ -> Добавить -> Создать проект: В открывающимся окне выберите "Библиотека классов" и укажем ему имя BrowserLib: Нажимает "Ок". Мы создали проект, который пока пустой и не содержит нужного функционала. Чтобы мы могли использовать эту библиотеку, мы должны сохранить её. Нажимаем на иконку дискеток: Переименуем наш класс на более понятое название, например: BrowserLog. Чтобы это было быстрее, достаточно в окне проекта выделить наш класс и нажать клавишу F2, которая уже давно в ОС Windows является горячей клавишей "переименовать": нажимаем мышью где-либо и у нас появится сообщение: "Идет переименование файла..." Соглашаемся на эту процедуру и все ссылки на это имя класса будут переименованы во всём проекте. Теперь мы можем приступать к написанию этой dll-ки. С чего начать? Ну раз класс, по-идеи, должен сохранять последние ссылки, то они должны где-то хранится. По-этому, как вариант, я предлагаю их хранить в файле, заодно и изучим работу с ними :) Создадим в проекте библиотеки новый файл, для этого в BrowserLib нажимаем ПКМ ->Добавить->Создать элемент: Более простой вариант - горячие клавиши CTRL+SHIFT+A. В появившемся окне, выбираем "Текстовый файл", указываем ему имя "Log.txt" и нажимаем "Ок": Мы прикрепили файл к нашему проекту, но нужно сделать ещё одну манипуляцию - автоматически создаваемый файл при компиляции проекта. Для этого выберем созданный текстовый файл и нажмём свойства и укажем полю "Копировать в выходной каталог" применим пункт "Всегда копировать": Сохраняем проект и переходим к редактированию кода библиотеки. Чтобы работать с файлами, нам необходимо подключить библиотеку. Пишем:
Чтобы не геммороиться с созданием объектов этого класса, предлагаю сделать 2 статичных метода, которые будут записывать и читать файл. Начнём с записи в файл: 1) Создадим метод "AddMessage", который будет добавлять запись в Лог:
Далее идёт непосредственно сам процесс записи. Структуру файла я предлагаю сделать такой:
Чтобы мы могли легко читать данные с файла я отделил текст и дату сепаратором "|". А сам процесс записи такой:
Вначале указывается путь к файлу. Так как как файл автоматически будет создаваться в директории с программой, то ничего лишнего сюда добавлять не понадобилось. После этого указывается строка, которая будет дописана в файл. Чтобы отделить строки, я добавил к тексту ещё и перенос строки \r. ВАЖНО! Символ "" в c# поддерживается частично и данном случаи он не будет переносить строки. Чтобы записать ещё и дату, нужно воспользоваться структурой DateTime. Процесс получения текущей даты выглядит следующим образом:
Чтобы обезопасить себя от исключений и ошибок влепим этот код в блок try. Сама процедура будет содержать такой код:
Таким образом, если каким-то макаром файл не удастся открыть, то процесс записи будет пропущен. Процесс чтения. Начнём с того, как написать метод? Прежде всего Есть метод, который возвращает массив строк и выглядит он таким образом:
Таким образом можно сформировать такой статический метод:
Нужно также помнить, что если файла не существует, то программа вызовет исключение по данному поводу и приведёт к краху браузера, по этому этот код лучше заточить в блок try. Весь метод будет віглядить так:
Если файл не удастся открыть, то метод возвратит null. Компилируем нашу библиотеку (клавиша F6) и сохраняем проект. Нам осталось только применить нашу библиотеку и посмотреть работает ли она :) Переходим в проект браузера и в обработчике событий кнопки добавим код:
Чтобы компилятор видел нашу процедуру, нам необходимо включить её в проект. Для этого переходим в Управление проектом, Ссылки ->ПКМ->Добавить ссылку: В открывающемся окне выбираем вкладку "Проекты" Выбираем созданный ранее проект библиотеки и нажимаем "Ок". Теперь нам нужно подключить её программно:
Всё, можно делать тест! Я перешел по 4-м разным сайтам и открыт файл "Log.txt", который находился в папке "WebForm\bin\Debug" и получил следующий результат:
Все ссылки успешно записались в Лог-файл!
Что-же, на этом пожалуй окончу урок. В следующем мы рассмотрим такие темы, как вызов другой формы из первой, компонент ListBox. Встретимся в новом уроке ;)
|1598|1|0|24265069png
624144
40092\|07302869
png275
191|43327562png
587258
400175\|42212840
png199
77|63947792png
499173
400138\|60434137
png833
162400
77|43133982png
481132
400109\|06149403
png303
135|98741504png
25479\|27122640
png473
223399
188|44644833png
600202
400`134||podkljuchaem_dll_biblioteku|1392773268
private void button1_Click( object sender, EventArgs e ) { try { webBrowser1.Url = new Uri( textBox1.Text ); BrowserLog.AddMessage( textBox1.Text ); label1.Text = ""; } catch { label1.Text = "Неверное имя ссылки!"; } }
using BrowserLib;
using System.IO;
public static void AddMessage( string Text ) { // Здесь будет код! }
ДАТА_СОЗДАНИЯ|ТЕКСТ
File.AppendAllText( "Log.txt", Text + "\r\n" );
DateTime.Today.ToShortDateString()
try { File.AppendAllText( "Log.txt", DateTime.Today.ToShortDateString() + "|" + Text + "\r\n" ); } catch { return; }
File.ReadAllLines( "Log.txt" );
public static string[] GetMessages() { // Здесь будет процесс чтения }
public static string[] GetMessages() { try { return File.ReadAllLines( "Log.txt" ); } catch { return null; } return Lines; }