предоставляет некоторые статические методы, которые облегчают работу с путями доступа. Например, предположим, что необходимо вывести имя полного пути доступа для файла ReadMe.txt в папке C:My Documents. Путь доступа к файлу можно найти с помощью следующей операции:

Console.WriteLine(Path.Combine(@'C:My Documents', 'ReadMe.txt'));

Использовать класс Path значительно проще, чем пытаться справиться с символами-разделителями вручную, потому что класс Path знает различные форматы имен путей доступа в различных операционных системах. Во время написания книги Windows являлась единственной операционной системой, поддерживаемой .NET, но если, например, .NET будет в дальнейшем перенесена на Unix, то Path сможет справиться с путями доступа Unix, где в качестве разделителя в именах путей доступа используется /, а не . Path.Combine является методом этого класса, который будет вероятно использоваться чаще всего, но Path реализует также другие методы, которые предоставляют информацию о пути доступа или требуемом для него формате.

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

Пример: файловый браузер

В этом разделе представлен пример приложения C#, называемого FileProperties. FileProperties представляет простой интерфейс пользователя, который позволяет перемещаться по файловой системе и видеть время создания время последнего доступа, время последней записи и размер файлов.

Приложение FileProperties выглядит следующим образом. Пользователь вводит имя папки или файла в основное текстовое поле в верхней части окна и нажимает кнопку Display. Если вводится путь доступа к папке, ее содержимое выводится в окне списка. Если ввести путь доступа к файлу, то данные о нем появятся в текстовых полях в нижней части формы, а содержимое папки — в окне списка. На экране показано приложение FileProperties, используемое для просмотра папки:

Пользователь может очень легко перемещаться по файловой системе, щелкая мышью на любой из папок в правом окне списка для перехода в эту папку или на кнопке Up для перемещения в родительскую папку. На приведенном выше экране в основном текстовом поле введено C:4990, чтобы получить содержимое этого раздела, который использует окно списка для дальнейшего перемещения. Пользователь может также выбрать файл, щелкая на его имени в окне списка, в этом случае его свойства выводятся в текстовых полях:

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

Мы создаем проект как стандартное приложение C# Windows в Visual Studio.NET и добавляем различные текстовые поля и окно списка из области Windows Forms в панели инструментов. Затем элементы управления переименовываются в более понятные имена txtBoxInput, txtBoxFolder, buttonDisplay, buttonUp, listBoxFiles, listBoxFolders, textBoxFileName, textBoxCreationTime, txtBoxLastAccessTime, txtBoxLasrWriteTime и textBoxFileSize.

После чего добавляется следующий код:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.IO;

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

public class Form1 : System.Windows.Forms.Form {

#region Member Fields

 private string currentFolderPath;

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

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

□ Пользователь щелкает на кнопке Display. В этом случае необходимо определить, что введенный пользователем текст в основном текстовом поле является путем доступа к файлу или папке. Если это папка, мы перечисляем файлы и вложенные папки этой папки в окне списка. Если это файл, мы делаем это для папки, содержащей этот файл, но также выводим свойства файла в нижних текстовых полях.

□ Пользователь щелкает на имени файла в окне списка Files. В этом случае мы выводим свойства этого файла в нижних текстовых полях.

□ Пользователь щелкает на имени папки в окне списка Folders. В этом случае мы очищаем все элементы управления и затем выводим содержимое этой вложенной папки в окне списка.

□ Пользователь щелкает на кнопке Up. В этом случае мы очищаем все элементы управления и затем выводим содержимое родительской папки в окне списка.

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

protected void ClearAllFields() {

 listBoxFolders.Items.Clear();

 listBoxFiles.Items.Clear();

 txtBoxFolder.Text = '';

 txtBoxFileName.Text = '';

 txtBoxCreationTime.Text = '';

 txtBoxLastAccessTime.Text = '';

 txtBoxLastWriteTime.Text = '';

 txtBoxSize.Text ='';

}

Затем определяется метод DisplayFileInfo(), который обрабатывает процесс вывода информации для заданного файла в текстовых полях. Этот метод получает один параметр, полное имя пути доступа файла и работает, создавая объект FileInfo на основе этого пути доступа:

protected void DisplayFileInfo(string fileFullName) {

 txtBoxFileName.Text = TheFile.Name;

 txtBoxCreationTime.Text = TheFile.CreationTime.ToLongTimeString();

 txtBoxLastAccessTime.Text = TheFile.LastAccessTime.ToLongDateString();

 txtBoxLastWriteTime.Text = TheFile.LastWriteTime.ToLongDateString();

 txtBoxFileSize.Text = TheFile.Length.ToString() + ' bytes';

}

Отметим, что здесь мы воздержались от порождения исключения в случае каких-либо проблем с

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату