Результатом разработки является пользовательское Windows – приложение. После запуска приложения и открытия файла можно посмотреть основную информацию о файле: Размер, дата создания, дата изменения, дата открытия, имя. Так же можно посмотреть какими атрибутами обладает файл и внести желаемые изменения и сохранить их.
Так же можно выполнить переименование, перемещение и копирование файла.
Программа обладает способностью посчитать количество букв, слов, символов, символов без пробелов у текстовых файлов.
Программа может быть использована как замена некоторых функций Проводника Windows и текстовых редакторов. Функционал приложения ограничен поставленными задачами.
Заключение
1. В ходе данной работы были выполнены все поставленные задачи, повышен навык работы с платформой.NETFramework, языком программирования C#.
2. Простейший интерфейс позволяет работать даже начинающим пользователям ПК.
3. Предусмотрено уведомление пользователя об ошибках.
4. Выполнены все требования к приложению, кроме применения функций WinAPI, т.к. они устарели и их использование значительно увеличило время разработки.
5. Данное приложение можно доработать до более серьёзного приложения, к примеру до приложения, выполняющего базовые функции файл – менеджера.
Список используемой литературы
http://msdn.microsoft.com/ru-ru/library
http://wincmd.ru/plugring/totalcmd.html
http://msdn.microsoft.com/ru-ru/library/bb383977.aspx
Приложение.
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 = "Имя файла:\n" + 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 = "Информация о файле:\n"
+ "Размер: "+fileinf.Length.ToString()+" байт.\n"
+ "Создан: "+fileinf.CreationTime.ToString()
+ "\nИзменён: " + fileinf.LastWriteTime.ToString()
+ "\nОткрыт: " + 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() + "\n"
+ "Слов: " + slov.ToString() + "\n"
+ "Символов всего: " + sym_all.ToString() + "\n"
+ "Символов без пробелов: " + sym.ToString() + "\n");
}
}
}
}
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)
{
}
}
}






