не является классом, экземпляры которого будут создаваться. Скорее он предоставляет некоторые статические методы, которые облегчают работу с путями доступа. Например, предположим, что необходимо вывести имя полного пути доступа для файла
ReadMe.txt
в папке
C:\My Documents
. Путь доступа к файлу можно найти с помощью следующей операции:
Использовать класс 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
, который обрабатывает процесс вывода информации для заданного файла в текстовых полях. Этот метод получает один параметр, полное имя пути доступа файла и работает, создавая объект
Отметим, что здесь мы воздержались от порождения исключения в случае каких-либо проблем с местоположением файла. Исключение будет обрабатываться в вызывающей процедуре (в одном из обработчиков событий). Наконец, мы определяем метод
DisplayFolderList
, который выводит содержимое данной папки в двух окнах списка. Полное имя пути доступа папки передается в этот метод в качестве параметра: