Чтение онлайн

на главную

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

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

FileInfo
или
DirectoryInfo
) найти о нем информацию, используя ряд свойств, включающих:

Имя Назначение
CreationTime
Время создания файла или папки.
DirectoryName(FileInfo)
,
Parent(DirectoryInfo)
Полный путь доступа содержащей папки.
Exists
Существует ли файл или папка.
Extension
Расширение
файла. Возвращается пустым для папок.
FullName
Полное имя пути доступа файла или папки.
LastAccessTime
Время последнего доступа к файлу или папке.
LastWriteTime
Время последней модификации файла или папки.
Name
Имя файла или папки.
Root
(Только
DirectoryInfo
.) Корневая часть пути доступа.
Length
(Только
FileInfo
.) Возвращает размер файла в байтах.

Можно также выполнить действия на объекте файловой системы с помощью следующих методов:

Имя Назначение
Create
Создает папку или пустой файл с заданным именем. Для
FileInfo
он возвращает также объект потока, чтобы позволить записать в файл. Потоки будут рассмотрены позже.
Delete
Удаляет файл или папку. Для папок существует вариант рекурсивного метода
Delete
.
MoveTo
Перемещает и/или переименовывает файл или папку.
CopyTo
(Только
FileInfo
.) Копирует файл. Отметим, что не существует метода копирования для папок. Если копируются все деревья каталогов, то необходимо индивидуально скопировать каждый файл и создать новые папки, соответствующие старым папкам.
GetDirectories
(Только
DirectoryInfo
.) Возвращает массив объектов
DirectoryInfo
, представляющих все папки, содержащиеся в этой папке.
GetFiles
(Только
DirectoryInfo
.) Возвращает массив объектов
FileInfo
, представляющих все папки, содержащиеся в этой папке.
GetFileSystemObjects
(Только
DirectoryInfo
.) Возвращает объекты
FileInfo
и
DirectoryInfo
, представляющие все объекты, содержащиеся в этой папке, как массив ссылок
FileSystemInfo
.

Отметим, что приведенные выше таблицы показывают основные свойства и методы, и не являются исчерпывающими.

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

FileInfo
реализует также ряд методов (
Open
,
OpenRead
,
OpenText
,
OpenWrite
,
Create
,
CreateText
, которые возвращают объекты потоков для этой цели).

Интересно то, что время создания, время последнего доступа, и время последней записи являются изменяемыми:

// Test является FileInfo или DirectoryInfo. Задать время создания

// как 1 Jan 2001, 7.30 am

Test.CreationTime = new DateTime(2001, 1, 1, 7, 30, 0);

Это

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

Класс Path

Класс

Path
не является классом, экземпляры которого будут создаваться. Скорее он предоставляет некоторые статические методы, которые облегчают работу с путями доступа. Например, предположим, что необходимо вывести имя полного пути доступа для файла
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
.

Поделиться:
Популярные книги

Лорд Системы 12

Токсик Саша
12. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 12

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Нефилим

Демиров Леонид
4. Мания крафта
Фантастика:
фэнтези
боевая фантастика
рпг
7.64
рейтинг книги
Нефилим

Девятое правило дворянина

Герда Александр
9. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Девятое правило дворянина

Странник

Седой Василий
4. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Странник

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Счастливый торт Шарлотты

Гринерс Эва
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Счастливый торт Шарлотты

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Огни Аль-Тура. Завоеванная

Макушева Магда
4. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Огни Аль-Тура. Завоеванная

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3