Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 14
Тема: Работа с файловой системой.
Цели:
научиться создавать объекты и подпрограммы на языке С#;
научиться добавлять элементы в список с помощью программного кода;
научиться работать со свойствами и методами классов DirectoryInfo, Directory и StreamReader.
1. Создайте новый Web-проект в среде Visual Studio.NET.
2. Оформление формы и установка свойств объектов.
Поместите на Web-форму следующие объекты: Label1, Label2, Label3, Label4, DropDownList1, DropDownList2, Button1, Button2, Button3, TextBox1.
Установите свойства объектов, как указано в табл.1.
Свойства элементов управления
Объект |
Свойства |
Label1 |
Text=Каталог: |
Label2 |
Text= |
Label3 |
Text=Подкаталоги: |
Label4 |
Text=Файлы: |
Button1 |
Text=Обновить список файлов |
Button2 |
Text=Вверх |
Button3 |
Text=Прочитать файл |
TextBox1 |
TextMode=MultiLine ReadOnly=True |
Ваша страница должна выглядеть, как на рис.1.
Итак, в нашем будущем приложении мы сможем просматривать каталоги, подкаталоги и файлы на жестком диске, а также загружать текстовые файлы в объект TextBox1. Для того чтобы можно было просмотреть текст с помощью полосы прокрутки, свойство TextMode объекта TextBox1 установлено в MultiLine.
Для того чтобы получить доступ к классам, предназначенных для получения информации о существующих файлах и каталогах и выполнения типичных операций с файлами и каталогами, необходимо импортировать пространство имен System.IO. Для этого в самом начале файла кода для нашей Web-страницы напишите следующую строку:
using System.IO;
Рис.1. Внешний вид Web-страницы.
Надпись Label2 будет отображать путь родительского каталога, в списке DropDownList2 (слева) можно будет выбрать необходимый подкаталог, список файлов которого по нажатию кнопки «Обновить список файлов» загрузится в DropDownList1 (справа). Для того чтобы подняться на один уровень вверх по дереву каталогов, нужно нажать кнопку «Вверх». И наконец, чтобы прочитать содержимого какого-либо текстового файла, необходимо выбрать имя файла в списке DropDownList1 и нажать кнопку «Прочитать файл».
3. Сначала напишем код, который должен выполняться при загрузке нашей страницы а именно, загрузка списка подкаталогов и файлов «по умолчанию». Для этого дважды щелкните мышкой на самой Web-странице. Откроется редактор кода. Напишем здесь следующие строки:
private void Page_Load(object sender, System.EventArgs e)
{
if (this.IsPostBack = = false)
{
string StartDir = @"с:\temp";
Label2.Text = StartDir;
ShowFiles (StartDir);
ShowDirectories (StartDir);
}
}
Разберем строки этого кода.
if (this.IsPostBack = = false)
{
// Строки кода
}
Этот блок if необходим для того, чтобы проверить, первый ли раз загружается страница. Строки кода, находящиеся внутри блока if, будут выполняться только в том случае, если страница загружается впервые. То есть, при нажатии на какую-то кнопку эти действия выполняться не будут.
string StartDir = @"с:\temp";
В этой строке объявляется переменная типа string StartDir, и ей сразу же присваивается значение «c:\temp». Это путь каталога, подкаталоги и файлы которого будут загружены в списки DropDownList1 и DropDownList2 «по умолчанию».
Label2.Text = StartDir;
Здесь мы присваиваем свойству Text объекта Label2 содержимое переменной StartDir, то есть «C:\temp».
ShowFiles (StartDir);
ShowDirectories (StartDir);
В этих строках мы вызываем подпрограммы ShowFiles и ShowDirectories, передавая им параметр StartDir.
Сейчас нам нужно создать подпрограммы ShowFiles и ShowDirectories. Для этого после блока Page_Load напишем следующий код:
private void ShowFiles (string dir)
{
DirectoryInfo DirInfo = new DirectoryInfo(dir);
DropDownList1.Items.Clear();
foreach (FileInfo FileItem in DirInfo.GetFiles())
DropDownList1.Items.Add(FileItem.Name);
}
private void ShowDirectories (string dir)
{
DirectoryInfo DirInfo = new DirectoryInfo(dir);
DropDownList2.Items.Clear();
foreach (DirectoryInfo DirItem in DirInfo.GetDirectories())
DropDownList2.Items.Add(DirItem.Name);
}
Это две подпрограммы, которые загружают списки подкаталогов (ShowDirectories) и файлов (ShowFiles) в списки DropDownList2 и DropDownList1, соответственно. Рассмотрим одну из этих подпрограмм более подробно.
private void ShowDirectories (string dir)
В скобках указывается аргумент, который принимает подпрограмма. В нашем случае, это переменная типа string. Служебное слово void указывает на то, что процедура не возвращает никакого значения.
DirectoryInfo DirInfo = new DirectoryInfo(dir);
С помощью слова new создается новый экземпляр (DirInfo) объекта DirectoryInfo.
DropDownList2.Items.Clear();
С помощью метода Clear() производится очистка элементов списка DropDownList2.
foreach (DirectoryInfo DirItem in DirInfo.GetDirectories())
DropDownList2.Items.Add(DirItem.Name);
В список DropDownList2 добавляются элементы, имя каждого из которых соответствует названию подкаталога. Таким образом, сколько подкаталогов находится в директории, столько элементов списка и будет создано.
Сейчас уже можно запустить приложение. Мы увидим, какие подкаталоги (в списке DropDownList2) и файлы (в списке DropDownList1) содержит каталог с:\temp. Ваше приложение должно выглядеть, как на рис.2.
Рис.2. Web-приложение «Дерево каталогов».
4. Сейчас настало время обработать событие нажатия на кнопку «Обновить список файлов». Для этого дважды щелкните мышкой на кнопке Button1 и напишите следующий код:
private void Button1_Click(object sender, System.EventArgs e)
{
string NewDir = Label2.Text+ '\\';
NewDir += DropDownList2.SelectedItem.Text;
Label2.Text = NewDir;
ShowFiles (NewDir);
ShowDirectories (NewDir);
}
Разберем строки этого кода подробнее.
string NewDir = Label2.Text+ '\\';
NewDir += DropDownList2.SelectedItem.Text;
Эти строки объявляют и инициализируют переменную типа string. В результате переменная NewDir будет содержать полный путь к каталогу, файлы и подкаталоги которого нам нужно загрузить в списки.
ShowFiles (NewDir);
ShowDirectories (NewDir);
Эти строки вызывают на выполнение подпрограммы ShowFiles и ShowDirectories, но в качестве аргумента им передается переменная NewDir, содержащая путь к необходимому каталогу.
Для того чтобы наш браузер был полным, нужно обработать нажатие кнопки «Вверх». В блоке кода для этого события напишите следующие строки:
private void Button2_Click(object sender, System.EventArgs e)
{
string NewDir;
NewDir = Directory.GetParent(Label2.Text).FullName;
Label2.Text = NewDir;
ShowFiles (NewDir);
ShowDirectories (NewDir);
}
Функция Directory.GetParent(Label2.Text).FullName возвращает полное имя родительского каталога по отношению к директории, путь которой содержится в свойстве Text объекта Label1.
5. Запустите приложение и поэкспериментируйте со списками и кнопками.
6. И наконец, напишем код для нажатия кнопки «Прочитать файл»:
private void Button3_Click(object sender, System.EventArgs e)
{
string x = Label2.Text;
x += '\\' + DropDownList1.SelectedItem.Text;
StreamReader sr = File.OpenText(x);
TextBox1.Text = sr.ReadToEnd();
sr.Close();
}
Итак, мы создаем новую строковую переменную x, в которой будет содержаться полный путь к выбранному файлу. С помощью специального класса считывающего потока (StreamReader) указанный файл открывается (File.OpenText(x)). Затем с помощью метода ReadToEnd(), то есть считывание текстовой информации до конца файла, в TextBox1 загружается содержимое выделенного файла. Затем файл закрывается, так как в противном случае осуществленные изменения могут быть неправильно записаны на диск, а сам файл может быть блокирован в открытом состоянии.
7. Запустите приложение.
Контрольные вопросы и задания:
1. Как вызвать подпрограмму? Как передать процедуре аргумент?
2. Для чего нужны подпрограммы?
3. Для чего нужна проверка условия if (this.IsPostBack = = false)?
4. Как создать подпрограмму?
5. Что означает служебное слово void?
6. Как открыть файл? Как его закрыть?
7. Измените код приложения из блока Page_Load исключите проверку условия if (this.IsPostBack = = false). Запустите приложение. Что изменилось? Почему программа работает именно таким образом?
8. Добавьте в приложение еще одну кнопку и текстовое поле. По нажатию кнопки в текстовом поле выводится информация о выбранном файле время создания файла и время последнего доступа к файлу. Для этого вам понадобятся методы GetCreationTime() и GetLastAccessTime(). Для того, чтобы показать время создания файла File1, нужно использовать следующий метод:
File.GetCreationTime(File1).ToString()