Файл менеджер на языке C#

Министерство образования и науки РФ

ФГАОУ ВПО «Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»

Радиотехнический институт – РТФ

Кафедра автоматизированных систем управления

Курсовая Работа

По дисциплине: Операционные системы

На тему: Разработка приложения FileInfo по средствам среды программирования Microsoft Visual C#

Вариант №5

Преподаватель_________________________ Зверева О.М.

Студент_______________________________ Чернавских К.А.

Дата__________________________________ 2011 года.

Группа Р-48021

2011

Задание на разработку

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

Требования к программному продукту:

· Язык программирования – С++ (С#) с использованием API функций Win 32

· Среда разработки – VisualC++, C++ Builder, C# (или другая, позволяющая создавать 32-разрядные Windows-приложения)

· Интерфейс – оконное приложение, содержащее стандартные элементы управления (меню, кнопки, панели и т.п.)

· Для всех приложений выполнить структурную обработку исключений (SEH).

Содержание

Задание на разработку………………………………………………………………………….2

Содержание………………………………………………………………………………………3

Условные символы и сокращения…………………………………………………………….4

Введение………………………………………………………………………………………….5

1. Анализ поставленной задачи и формирование требований……………………………….6

1.1 Отношение к виду……………………………………………………………………………6

1.2 Аналоги……………………………………………………………………………………….6

1.3 Сравнение………………………………………………………………………………….11

1.4 Требования………………………………………………………………………………….12

2. Метод решения……………………………………………………………………………….18

3.Описание программы……………………………………………………………………….19

3.1 Использование пространств имён .NetFramework……………………………………….19

3.2 Используемые классы .NetFramework…………………………………………………….20

3.3 Используемые методы…………………………………………………………………….22

4. Руководство пользователя….………………………………………………………………25

4.1 Системные требования…………………………………………………………………….25

4.2 Инструкция пользователя………………………………………………………………….25

5. Результаты работы………………………………………………………………………….29

6. Заключение………………………………………………………………………………….30

Список используемой литературы…………………………………………………………….31

Приложение…………………………………………………………………………………….32

Условные обозначения, символы и сокращения

.NET Framework – Набор библиотек и системных компонентов, необходимых для работы приложений, созданных на платформе .NET

TC – Файловый менеджер Total Commander

ПК – персональный компьютер

Введение

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

В этом случае обычно на помощь приходят утилиты Windows, программа Total Commander. Так же в сети Интернет можно найти великое множество любительских программ, написанных самостоятельно и свободных в доступе. Любительские программы пишутся вследствие неудовлетворённости утилитами Windows: неудобством их использования, неполным набором исполняемых задач, а так же для освоения новых возможностей сред программирования. Во многих “серьёзных” программах просто необходимо выводить информацию о файлах и дальнейших действий с ними, что способствует актуальности изучения данной проблемы. Помимо любительских программ, имеются проффессиональные, сложные приложения, диапазон возможностей которых гораздо шире. В основном эти программы предназначены для работы с аудио и видеофайлами, т.к. они могут содержать гораздо больше информации о себе, нежели простые файлы.

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

1. Анализ поставленной задачи и формирование требований.

1.1 Отношение к виду

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

1.2 Аналоги

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

Свойства папки Windows:

Вызываются с помощью нажатия правой кнопки мыши на файл -> свойства. Это наглядно показано на рисунке 1.

Рисунок 1 – “Вызов”свойств папки Windows

После вызова свойств папки, появляется окно, которое отображает описание основных характеристик, просмотр и изменение атрибутов. Вид окна показан на Рисунке 2 и 3.

Рисунок 2 – Вид окна свойств. Рисунок 3 – Просмотр и изменение атрибутов.

Необходимые функции копирования, переименования и перемещения доступны с

помощью других пунктов контекстного меню. Это показано на Рисунке 1.

Total Commander

Total Commander (бывший Windows Commander) - это самый мощный и стабильный файловый менеджер для Windows с удобным пользовательским интерфейсом. Total Commander продолжает добрую традицию двухпанельных файловых менеджеров, но отличается повышенным удобством и функциональностью: поддерживает копирование, перемещение, переименование файла, просмотр и изменение его атрибутов, а так же многое другое. К примеру Total Commander позволяет соединятся с FTP серверами и удобно оперировать с содержимым папок узлов сети.

Поддерживает плагины, имеет множество встроенных полезных инструментов.

Интерфейс Total Commander демонстрируется на Рисунке 4.

Рисунок 4 – Интерфейс Total Commander

Копирование и перемещение выполняются “перетаскиванием” из исходного поля в желаемое.

Недостатком Total Commander может быть невозможность вызова контекстного меню определённо-выбранного файла. Но этот недостаток покрывает состав панели инструментов, с помощью которого можно легко проделать множество операций, в том числе изменение атрибутов. Это наглядно показано на Рисунке 5 и 6

Рисунок 5 – Панель инструментов TC. Рисунок 6 – изменение атрибутов файла в TC.

Утилита командной строки Windows

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

Перечислим некоторые команды и наглядно покажем их работу:

· Команда attrib позволяет просматривать и изменять атрибуты файла. Показано на Рисунке 7.

Рисунок 7 – Команда attrib.

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

· команды copy, moveи rename (или сокращенный вариант ren) соответственно копируют, перемещают и переименовывают файлы; Синтаксис команды copy показан на Рисунке 8.

Рисунок 8 – Команда Copy.

Большинство начинающих пользователей ПК даже и не подозревают о половине сказанного в справочнике командной строки.

· команда dir позволяет просмотреть характеристики файлов в некоторой папке. Показано на Рисунке 9.

Рисунок 9 – команда dir.

1.3 Сравнение

На основаниях, рассмотренных в предыдущем пункте проведём сравнение аналогов, указав их преимущества и недостатки

Свойства папки Windos

Преимущества:

· Удобный интерфейс

· Простота использования

Недостатки:

· Функции расположены в разных контекстах меню

· Неполный набор атрибутов

Total Commander

Преимущества:

· Удобный интерфейс

· Простота использования

· Широкий набор возможностей

· Польный набор атрибутов

· Возможность добавления персональных атрибутов

· Все функции выполняются в одном окне

Недостатки:

· Невозможность вызова контекстного меню выбранного файла

Утилита командной строки Windows

Преимущества:

· Входит в состав ОС

· Все функции доступны из одного окна

Недостатки:

· Неудобство интерфейса.

· Неудобство использования для начинающего пользователя ПК.

· Долговременность ввода синтаксиса

1.4 Требования

Основными требованиями к разрабатываемой программе являются:

1. Удобство использования

2. Простота интерфейса

3. Выполнение определённы функций:

· Открытие файла

· Отображение его основных характеристик

· Копирование

· Перемещение

· Переименование

· Вывод информации о текстовом файле

· Вывод сообщений о удачном перемещении, переименовании, копировании.

· Вывод сообщений о не найденном файле, ошибке и т.д.

UML Use Case диаграмма

На Рисунке 10 демонстрируется UML Use Case диаграмма разрабатываемого приложения.


Открыть файл

Атрибуты файла

«include»

Сохранить изменения атрибутов

«extend»

Посмотреть информацию о *.txt фафайл

«include»

Копировать

«extend»

Переместить

Переименовать

«extend»

«extend»


Рисунок 10 – UML Use Case диаграмма

Описание ВИ Открыть файл:

ВИ: Открыть файл

ID: 1

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

Действующие лица: Пользователь

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл.

Основной поток:

1. Программа открывает файл и выводит имя, размер, дату создания, дату изменения, дату открытия

2. Программа делает действующими кнопки: “Атрибуты файла”, “Переименовать”, “Переместить”, “Скопировать”

Альтернативные потоки:

1а. Файл не найден

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

Постусловия:

Будет выведена краткая информация о файле.

Описание ВИ «Атрибуты файла»:

ВИ: Просмотр и возможное изменение атрибутов

ID: 2

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

Действующие лица: Пользователь

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл.

3. Пользователь должен нажать на кнопку «Атрибуты файла».

4. Пользователь поставил/снял отметку рядом с атрибутом, который хочет установить/снять.

Основной поток:

1. Программа сохраняет изменения.

2. В зависимости от выбора пользователя программа сохраняет или отменяет изменения.

Альтернативные потоки: Нет.

Постусловия:

Атрибуты файла будут изменены если пользователь согласится сохранить изменения.

Описание расширяющего ВИ «Копировать»:

ВИ: Копировать файл

ID: 3

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

Действующие лица: Пользователь

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл.

3. Пользователь должен нажать кнопку «Копирование».

4. Пользователь должен указать путь копирования или создать новую папку для копирования.

Основной поток:

1. Программа копирует файл.

Альтернативные потоки:

4а. Создание новой папки

4а1. При нажатии кнопки копирование дополнительно появляется кнопка «Создать папку». Если пользователь создаёт папку и открывает её – файл копируется в новую папку

4б. Путь совпадает с текущим

4б1. В случае указания того местоположения, где находится файл в текущий момент – выводиться сообщение о том что такой файл уже существует и предлагает сделать выбор. «Продолжить» - продолжить работу программы без изменения, «Выход» - выход из приложения

Постусловия:

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

Описание ВИ Переместить:

ВИ: Перемещение файла

ID: 4

Краткое описание: Выполняется изменение местонахождения желаемого файла.

Действующие лица: Пользователь.

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл.

3. Пользователь должен нажать кнопку «Переместить».

4. Пользователь должен указать путь перемещения или создать новую папку для перемещения.

Основной поток:

1. Программа перемещает файл

Альтернативные потоки:

4а. Создание новой папки

4а1. При нажатии кнопки перемещение дополнительно появляется кнопка «Создать папку». Если пользователь создаёт папку и открывает её – файл перемещается в новую папку.

Постусловия:

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

Описание ВИ Переименовать:

ВИ: Переименование файла

ID: 5

Краткое описание: Выполняется изменение имени файла.

Действующие лица: Пользователь

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл.

3. Пользователь должен нажать кнопку «Переименовать».

4. Пользователь должен указать желаемое имя файла

Основной поток:

1. Переименование файла

Альтернативные потоки:

4а. Указание имени не имеющего ни одного символа

4а1. Если указать имя, не содержащее ни одного символа, программа выведет сообщение о невозможности такого переименования.

Постусловия:

У файла изменяется имя на указанное.

Описание ВИ Информация о *.txt-файле:

ВИ: Вывод дополнительной информации о *.txt-файле

ID: 5

Краткое описание: При нажатии кнопки «Информация о *.txt-файле» пользователю представляется информация о : количестве строк, слов, символов, символов без пробелов Действующие лица: Пользователь

Предусловия:

1. Пользователь должен запустить программу.

2. Пользователь должен выбрать желаемый файл с разрешением *.txt

3. Пользователь Должен нажать кнопку «Информация о *.txt-файле»

Основной поток:

1. Программа производит подсчет количества строк, слов, символов, символов без пробелов

Альтернативные потоки: Нет

Постусловия:

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

2. Метод решения

В данной курсовой работе для получения информации о файле, изменения атрибутов, переименования, перемещения, копирования, вывода информации о *.txt-файле мы будем использовать библиотеки Net Framework. Так же можно использовать функции WinAPI, но мы этого делать не будем, из соображений упрощения разработки. К тому же считается что WinAPI – это “вчерашний день”

3. Описаниепрограммы

3.1 Использование пространств имен NetFramework

· System – cодержит классы, позволяющие сопоставлять коды URI с шаблонами URI и группами шаблонов URI.

· System.Collections.Generic – содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, обеспечивающие повышенную производительность и безопасность типов по сравнению с неуниверсальными строго типизированными коллекциями.

· System.Drawing – содержит типы, поддерживающие базовые графические функции GDI+. Дочерние пространства имен поддерживают более сложные функции двухмерной и векторной графики, дополнительные функции обработки изображений, а также службы, связанные с печатью и типографикой. Дочернее пространство имен также содержит типы, которые расширяют логические и графические возможности пользовательского интерфейса во время разработки.

· System.ComponentModel - содержит классы, реализующие поведение компонентов и элементов управления во время проектирования и выполнения. Данное пространство имен включает базовые классы и интерфейсы, предназначенные для реализации преобразователей атрибутов и типов, для привязки к источникам данных и для лицензирования компонентов.

· System.Data - обеспечивает доступ к классам, которые представляют архитектуру ADO.NET. Архитектура ADO.NET позволяет создавать компоненты, эффективно работающие с данными из различных источников.

· System.Text – содержит типы для работы с кодировками символов и для управления строками. Дочернее пространство имен позволяет обрабатывать текст с использованием регулярных выражений.

· System.Linq - содержит классы и интерфейсы, которые поддерживают запросы, использующие LINQ (Language-Integrated Query).

· System.Windows.Forms – содержит классы для создания приложений Windows, которые позволяют наиболее эффективно использовать расширенные возможности пользовательского интерфейса, доступные в операционной системе Microsoft Windows.

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

·

3.3 Использованные классы .NetFramework

В данном разделе будут перечислены основные классы и функции .NetFramework которые использовались для разработки данного приложения. К информации о классе прилагается участок кода программы (некоторые из них с комментарием). А так же будут описаны статические методы и методы экземпляра, пространство имён где они находятся, их значения.

· FileInfo – Класс FileInfo предоставляет методы экземпляра для создания, открытия, удаления, переименования, копирования, перемещения, а так же добавления данных в файлы.

Открытие:

{

fileinf = new FileInfo(openFileDialog1.FileName);


update_fname_info(fileinf.Name);


label2.Visible = true;

label2.Text = "Информация о файле: "

+ "Размер: "+fileinf.Length.ToString()+" байт. "

+ "Создан: "+fileinf.CreationTime.ToString()

+ " Изменён: " + fileinf.LastWriteTime.ToString()

+ " Открыт: " + fileinf.LastAccessTime.ToString();


Переименование:

Form3 form_rename = new Form3(); //Создаём форму 3 - окно переименования

form_rename.textBox1.Text = fileinf.Name;

form_rename.ShowDialog(); //выводим форму

if (form_rename.change_name == true) //проверяем, изменили имя файла или нет

{

try

{

fileinf.MoveTo(fileinf.DirectoryName +@"" +form_rename.textBox1.Text);

update_fname_info(fileinf.Name); //обновляем в программе название файла

}

Перемещение:

if (check_exists(fileinf.FullName))

{

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

{

fileinf.MoveTo(folderBrowserDialog1.SelectedPath + @"" + fileinf.Name);

MessageBox.Show("Файл перемещён в " + folderBrowserDialog1.SelectedPath.ToString());

}

Копирование:

if (check_exists(fileinf.FullName))

{

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

{

fileinf.CopyTo(folderBrowserDialog1.SelectedPath + @"" + fileinf.Name);

MessageBox.Show("Файл скопирован в " + folderBrowserDialog1.SelectedPath.ToString());


· TextReader – Представляет средство чтения, позволяющее считывать последовательные наборы знаков.

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

TextReader reader = new StreamReader(fileinf.OpenRead()); // создаём объект для чтение содержимого файла

while (true)

{

cur_line = reader.ReadLine(); //считываем 1 строку


if (cur_line != null) //Если строка существует

{

str_have_sym = false;


for (int i = 0; i < cur_line.Length; i++)

{

sym_all++; //считаем все символы

  1. Exception – Представляет ошибки , происходящие во время выполнения приложения.
  1. File – Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а так же его можно использовать для получения и задания атрибутов.

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

3.4 Используемые методы

· Exists – определяет указывает ли заданный путь на существующий каталог на диске.

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

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

Тип: System.Boolean

Значение true, если path указывает на существующий каталог, в противном случае – значение false


· MessageBox.Show – Отображает окно сообщения с сообщением, которое возвращает результат.

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

Параметры:

Тип: System.String

Строка String, задающая отображаемый текст.

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

Тип: System.Windows.MessageBoxResult

Значение MessageBoxResult, идентифицирующее кнопку, нажатую пользователем в окне сообщения.

· Update_fname_info – метод, который используется при открытии и при обновлении файла. Проверяет длинну имени файла.

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

public void update_fname_info(string fname)

{

string tmp_fname = fileinf.Name;

if (tmp_fname.Length > 25)

{

tmp_fname = tmp_fname.Substring(0, 25);

}


label1.Text = "Имя файла: " + tmp_fname;


if (fileinf.Extension == ".txt")

{

button5.Enabled = true;

}

else

{

button5.Enabled = false;


Проверяет длинну имени файла. Не более 25-и символов. Эта же функция проверяет расширение файла. Если файл текстовый, то кнопка “информация.txt” становится активной.

· Substring – Возвращает подстроку, расположенную в указанном место обьекта String.

Аргументы:

Стартовый – Обязательный. Целое значение индекса (начиная с нуля), указывающее начало подстроки.

Конечный – Необязательный. Целое значение индекса (начиная с нуля), указывающее конец подстроки. Подстрока включает знаки до знака, задаваемого конечным значением, но не включая его.

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

Пример из кода программы:

tmp_fname = tmp_fname.Substring(0, 25);


· ShowDialog – Отображает форму как модальное диалоговое окно

Пространство имён: System.Windows.Forms

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

Тип: System.Windows.Forms.DialogResults

Одно из значений DialogResults

· Refresh - Удаляет любые кэщированные внутри компонента процесса сведения о связном процессе

· ToString – Преобразует числовое значение данного экземпляра в эквивалентное строковое представление с использованием указанного формата.

Пространство имён: System

Параметры:

Тип: System.String

Строка числового формата.

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

Тип: System.String

Строковое представление значения данного экземпляра, определяемое параметром

· ReadLine – Выполняет чтение строки символов из текущего потока и возвращает данные в виде строки

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

Возвращаемое значение: System.String

Следующая строка из входного потока иди значение Nothing, если достигнут конец входного потока.

· Close – Закрытие файла для чтения содержимого

Пространство имён: System.Data

4. Руководство пользователя

4.1 Системные требования

4.2 Инструкция пользователя

1. Для запуска программы дважды кликните на файле File_info.exe

2. После этого откроется окно программы с одной действующей кнопкой “Открыть файл”. Это показано на Рисунке 11

Рисунок 11 – Окно приложения File_info

3. Нажмите на кнопку и выберете желаемый файл. Если вы будете вводить несуществующее имя – появится сообщение об ошибке, затем будет предложено попробовать ввести имя вновь.

4. Далее появятся несколько активных кнопок: “Атрибуты файла”, “Переименовать”, “Переместить”, “Скопировать”, а так же если вы открыли файл с разрешением *.txt кнопка “Информация о *.txt-файле” так же станет активной.

5. В крайнем правом углу будет располагаться информация о файле: Размер, дата создания, дата изменения, дата открытия. Под кнопкой “Открыть файл” располагается имя файла

6. Нажав кнопку “Атрибуты файла” можно посмотреть какие атрибуты имеются у данного файла, а так же добавить желаемые. Что бы сохранить изменения нажмите кнопку “Сохранить изменения”. Это показано на Рисунке 12

Рисунок 12 – Атрибуты

7. Если тот файл, который вы открыли имеет формат *.txt можно посмотреть количество строк, слов, символов, символов без пробелов данного файла, нажав на кнопку “Информация о *.txt-файле”. Это показано на Рисунке 13

Рисунок 13 – Информация о текстовом файле

8. Для переименования файла нажмете на кнопку “Переименование”

После чего открывается окно с текущим именем файла. Его можно изменить на желаемое и сохранить, нажав на кнопку “Применить”. Если имя не будет содержать ни одного символа – появится сообщение об ошибке, после чего предлагается вновь попробовать ввести имя. Это показано на Рисунках 14 и 15

Рисунок 14 – Переименование Рисунок 15 – Сообщение об ошибке

9. Для перемещения файла нажмите кнопку “Переместить”. После нажатия кнопки появится окно, в котором будет предложено выбрать куда переместить данный файл. Так же будет активна кнопка “Создать папку”, с помощью которой вы можете создать папку для хранения выбранного файла. Это показано на Рисунке 16

Рисунок 16 – Перемещение

10. Для копирования файла нажмите кнопку “Скопировать”. После нажатия кнопки появится окно, в котором будет предложено выбрать куда скопировать данный файл. Так же будет активна кнопка “Создать папку”, с помощью которой вы можете создать папку для хранения выбранного файла. Если вы скопируете файл в туда где он уже находится – появится сообщение об ошибке и три активных кнопки: “Сведения” – подробнее познакомиться с ошибкой, “Продолжить – продолжить работу с программой без завершения последней операции” и “Выход” – завершение работы программы. Это показано на Рисунках 17 и 18.

Рисунок 17 – Копирование

Рисунок 18 – Сообщение об ошибке

11. Если необходимо закончить работу с текущим файлом и начать работу с другим – просто нажмите “Открыть файл”

12. Что бы закончить работу с приложением – нажмите крестик

5. Результаты разработки

Результатом разработки является пользовательское Windows – приложение. После запуска приложения и открытия файла можно посмотреть основную информацию о файле: Размер, дата создания, дата изменения, дата открытия, имя. Так же можно посмотреть какими атрибутами обладает файл и внести желаемые изменения и сохранить их.

Так же можно выполнить переименование, перемещение и копирование файла.

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

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

6. Заключение

1. В ходе данной работы были выполнены все поставленные задачи, повышен навык работы с платформой .NETFramework, языком программирования C#.

2. Простейший интерфейс позволяет работать даже начинающим пользователям ПК.

3. Предусмотрено уведомление пользователя об ошибках.

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

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

Список используемой литературы

#"#">#"#">#"Times New Roman">

Приложение.

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;


namespace File_info

{


public partial class Form1 : Form

{


FileInfo fileinf;

public Form1()

{

InitializeComponent();

}


public bool check_exists(string fname) //проверка существования файла

{

if (File.Exists(fname))

{

return true;

}

else

{

MessageBox.Show("Анализируемый файл был перемещён или удалён");

return false;

}

}


public void update_fname_info(string fname)

{

string tmp_fname = fileinf.Name;

if (tmp_fname.Length > 25)

{

tmp_fname = tmp_fname.Substring(0, 25);

}


label1.Text = "Имя файла: " + tmp_fname;


if (fileinf.Extension == ".txt")

{

button5.Enabled = true;

}

else

{

button5.Enabled = false;

}

}


private void button1_Click(object sender, EventArgs e)

{

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

{

fileinf = new FileInfo(openFileDialog1.FileName);


update_fname_info(fileinf.Name);


label2.Visible = true;

label2.Text = "Информация о файле: "

+ "Размер: "+fileinf.Length.ToString()+" байт. "

+ "Создан: "+fileinf.CreationTime.ToString()

+ " Изменён: " + fileinf.LastWriteTime.ToString()

+ " Открыт: " + fileinf.LastAccessTime.ToString();


button6.Enabled = true;


button2.Enabled = true;

button3.Enabled = true;

button4.Enabled = true;

}

}


private void button6_Click(object sender, EventArgs e)

{

Form2 form_attrib = new Form2();

form_attrib.fname = fileinf.FullName;


if ((fileinf.Attributes & FileAttributes.Archive) == FileAttributes.Archive) //Является ли архивным?

{

form_attrib.checkBox1.Checked = true;

}


if ((fileinf.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)//Является ли скрытым?

{

form_attrib.checkBox2.Checked = true;

}


if ((fileinf.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) //Является ли только для чтения?

{

form_attrib.checkBox3.Checked = true;

}


if ((fileinf.Attributes & FileAttributes.NotContentIndexed) == FileAttributes.NotContentIndexed) //Является ли включенным в индексацию?

{

form_attrib.checkBox4.Checked = false;

}


if ((fileinf.Attributes & FileAttributes.System) == FileAttributes.System) //Является ли системным?

{

form_attrib.checkBox5.Checked = true;

}


form_attrib.ShowDialog();

fileinf.Refresh();


}


private void button2_Click(object sender, EventArgs e)

{

if (check_exists(fileinf.FullName))

{

Form3 form_rename = new Form3(); //Создаём форму 3 - окно переименования

form_rename.textBox1.Text = fileinf.Name;

form_rename.ShowDialog(); //выводим форму

if (form_rename.change_name == true) //проверяем, изменили имя файла или нет

{

try

{

fileinf.MoveTo(fileinf.DirectoryName +@"" +form_rename.textBox1.Text);

update_fname_info(fileinf.Name); //обновляем в программе название файла

}

catch (Exception err)

{

MessageBox.Show(err.Message.ToString());

}

}

}

}


private void button3_Click(object sender, EventArgs e)

{

if (check_exists(fileinf.FullName))

{

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

{

fileinf.MoveTo(folderBrowserDialog1.SelectedPath + @"" + fileinf.Name);

MessageBox.Show("Файл перемещён в " + folderBrowserDialog1.SelectedPath.ToString());

}


}

}


private void button4_Click(object sender, EventArgs e)

{

if (check_exists(fileinf.FullName))

{

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

{

fileinf.CopyTo(folderBrowserDialog1.SelectedPath + @"" + fileinf.Name);

MessageBox.Show("Файл скопирован в " + folderBrowserDialog1.SelectedPath.ToString());

}


}

}


private void button5_Click(object sender, EventArgs e)

{

if (check_exists(fileinf.FullName))

{

// if (fileinf.Length > 1024*1024*1024)


int slov = 0; //объявляем переменные для статистики

int strok = 0;

int sym = 0;

int sym_all = 0;

string cur_line="";

bool str_have_sym ;


TextReader reader = new StreamReader(fileinf.OpenRead()); // создаём объект для чтение содержимого файла

while (true)

{

cur_line = reader.ReadLine(); //считываем 1 строку


if (cur_line != null) //Если строка существует

{

str_have_sym = false;


for (int i = 0; i < cur_line.Length; i++)

{

sym_all++; //считаем все символы


if (cur_line[i] == ) // Не является ли текущий символ пробелом?

{

if (((i + 1) < cur_line.Length) && (cur_line[i + 1] != )) // если символ не является последним и не явл. пробелом

{

slov++;

}


}

else

{

str_have_sym = true; //Строка имеет символы

sym++; //Считаем символы, без пробелов

}


}


if (str_have_sym == true)

{


slov++;

}


strok++;

}

Else


{

break; //Выход из бесконечного цикла

}

}


reader.Close(); //Закрываем файл для чтения содержимого

MessageBox.Show("Строк: " + strok.ToString() + " "

+ "Слов: " + slov.ToString() + " "

+ "Символов всего: " + sym_all.ToString() + " "

+ "Символов без пробелов: " + sym.ToString() + " ");


}

}

}

}

Form2.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;


namespace File_info

{

public partial class Form2 : Form

{


public string fname;

public Form2()

{

InitializeComponent();

}


private void button2_Click(object sender, EventArgs e)

{

this.Close();

}


private void button1_Click(object sender, EventArgs e)

{

FileInfo fileinf = new FileInfo(fname); //Fileinf - объект класса FileInfo


if (checkBox1.Checked == true)

{

fileinf.Attributes |= FileAttributes.Archive; // устанавливаем аттрибут

}

else

{

fileinf.Attributes ^= FileAttributes.Archive; //снимаем аттрибут

}


if (checkBox2.Checked == true)

{

fileinf.Attributes |= FileAttributes.Hidden;

}

else

{

fileinf.Attributes ^= FileAttributes.Hidden;

}


if (checkBox3.Checked == true)

{

fileinf.Attributes |= FileAttributes.ReadOnly;

}

else

{

fileinf.Attributes ^= FileAttributes.ReadOnly;

}


if (checkBox4.Checked == false)

{

fileinf.Attributes |= FileAttributes.NotContentIndexed;

}

else

{

fileinf.Attributes ^= FileAttributes.NotContentIndexed;

}


if (checkBox5.Checked == true)

{

fileinf.Attributes |= FileAttributes.System;

}

else

{

fileinf.Attributes ^= FileAttributes.System;

}


this.Close();

}


private void checkBox1_CheckedChanged(object sender, EventArgs e)

{


}

}

}

Form3.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;


namespace File_info

{

public partial class Form3 : Form

{

public bool change_name = false;


public Form3()

{

InitializeComponent();

}


private void button1_Click(object sender, EventArgs e)

{

change_name = true;

this.Close();

}


private void button2_Click(object sender, EventArgs e)

{

this.Close();

}


private void label1_Click(object sender, EventArgs e)

{


}


private void textBox1_TextChanged(object sender, EventArgs e)

{


}

}

}



Похожие материалы:

Принципы и нормы журналистской этики

.Кодекс профессиональной этики журналиста БСЖ.

Функциональная пропедевтика на уроках математики в пятых-шестых классах

Иногда для неявной функции можно получить е явное задание. Это можно сделать тогда когда уравнение связывающее аргумент и функцию. Подобные диаграммы можно делать как в так и в классе. Материал для них можно взять из географических. Найти его значение при а. и. Пример При каких значениях х следующие выражения равны нулю х х Учащиеся не видят функцию если она задана неявно..

Внутрифирменное планирование на предприятии

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

Перигляциальная зона

Перигляциальные процессы. Комплекс специфических форм ледникового и мерзлотного рельефа перигляциальной зоны и сопутствующих. periglaziale Ablagerungen periglacial deposits. Медленная скорость развития почв и растительности. Перигляциальная зона испытывает сильное влияние.

Конфликтность молодой семьи в период первичной адаптации

Кафедра Практической психологии ТЕМА Конфликтность молодой семьи в период первичной адаптации Гайсина Светлана Владимировна Библиографический список Институт профессиональных инноваций