Visual Basic 6. Руководство разработчика

Доступ к папкам и файлам


В предыдущем параграфе рассмотрены методы объекта

FileSystemObject, которые позволяют обращаться к файлам на локальном диске. Объект FileSystemObject поддерживает много других методов для операций с файлами и папками, (позволяющими копировать и удалять файлы и папки), которые более интересны для программиста на VB, чем методы доступа к текстовым файлам. Хотя в Visual Basic имеются операторы и функции для доступа к файловой системе, но объект FileSystemObject предоставляет целостный, иерархический подход к файловой системе, поэтому рекомендуется использовать именно его.

Примечание

Только объект FileSystemObject позволяет обратиться к файловой системе из сценария.

CopyFile. Копирует один или более файлов из одной папки в другую. Он имеет следующий синтаксис.

FSys.CopyFile source, destination, overwrite

Аргумент

source - путь к файлу-источнику. Он может содержать и символы шаблона (для копирования нескольких файлов). Аргумент destination - путь к папке-приемнику, в которую копируются файлы. Он, что естественно, не может содержать символы шаблона. Последний аргумент — overwrite — необязателен и принимает булево значение (True/False) и определяет, будет ли существующий файл переза­писан. Метод CopyFile генерирует ошибку выполнения, если у файла-приемника установлен атрибут "только для чтения" независимо от значения аргумента overwrite. Свойство Attributes рассмотрено в примере обновления файла с установленным атрибутом "только для чтения".

CopyFolder.

Копирует папку, включая подпапки (это называется рекурсивным копированием). Синтаксис метода CopyFolder приведен ниже.

FSys.CopyFolder source, destination, overwrite

Здесь

source - путь к папке-источнику (из которой копируются файлы), может содержать символы шаблона при копировании группы файлов. Destination — путь к папке-приемнику (в которую копируются файлы) — не может содержать символы задания шаблона. Последний аргумент overwrite - необязателен и его значение (True/False) определяет, можно ли существующие файлы в папке переза­писывать. Чтобы защитить уже существующие файлы в папке-приемнике, установите его в False.




Для копирования всех Doc-файлов из папки MyDocuments в папку WorkDocs\Feb-ruary используйте оператор

FSys.CopyFolder "С:\MyDocuments\*.DOC", "С:\WorkDocs\February"

где

FSys - должным образом объявленная переменная FileSystemObject.

Предупреждение

Если встречается ошибка, то метод CopyFolder прерывает свою работу. Это значит, что некоторые файлы будут скопированы, а некоторые — нет.

DeleteFile. Удаляет один или несколько файлов. Имеет следующий синтаксис.

FSys.DeleteFile filespec, force

Здесь

filespec - имя файла (файлов) для удаления, которое может содержать символы шаблона. Аргумент force необязателен. Он определяет, будут ли удаляться (True) файлы с атрибутом "только для чтения", или нет (False). Подобно методу CopyFile, при обнаружении первой ошибки он останавливается.

DeleteFolder.

Удаляет заданную папку и ее содержимое, включая подпапки и их файлы. Его синтаксис идентичен DeleteFile.

FSys.DeleteFolder folderspec, force

Здесь

folderspec — имя папки для удаления. Папка будет удалена и в том случае, даже если она содержит файлы (сравните с командой RMDIR в DOS). Аргумент force имеет то же значение, что и в DeleteFile.

Movefile. Метод перемещает один или несколько файлов из одной папки в другую. Его синтаксис следующий.

FSys.MoveFile source, destination

Здесь

source - путь к перемещаемым файлам, a destination —

путь к папке, в которую будут перемещены файлы. Метод работает аналогично методу Сору, но файлы-источники после копирования удаляются. Аргумент source может содержать символы шаблона для перемещения групп файлов, destination — это имя файла или имя папки (в случае перемещения в определенную папку). Если копируется несколько файлов, то destination -

это путь к папке, в которую перемещаются файлы. Если destination задает уже существующее имя файла или папки, то происходит ошибка.

MoveFolder. Этот метод перемещает папку в другое место. Его синтаксис:

FSys.MoveFolder source, destination

где

source и destination - спецификации папки-источника и папки-приемника.



FileExist, FolderExists.

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

FSys.FileExists(fileSpec)

и

FSys.FolderExists(folderSpec)

GetFile, GetFolder.

Эти методы возвращают соответственно объект File и Folder, которые представляют заданный файл или папку.

Примечание

Метод GetFile не возвращает файл или имя файла: он возвращает ссылку, обеспечи­вающую доступ к свойствам файла. Объекты File и Folder рассмотрены далее в этой главе.

Чтобы с помощью метода GetFile создать объектную переменную типа File, необходимо создать объектную переменную типа FileSystemObject, а затем вызвать ее метод GetFile.

Set thisFile = FSys.GetFile ("с:\autoexec.bat")

Переменная

thisFile представляет файл AUTOEXEC.BAT, и можно использовать ее свойства и методы для манипулирования файлом. Например, можно использовать ее свойство Size для определения размера файла, свойство DataCreated для определения даты создания и т.д. Свойства и методы объекта File приведены в параграфе "Объект File".

Метод GetFolder полностью аналогичен GetFile, за исключением того, что он возвращает объект Folder. Аргумент метода GetFolder должен быть абсолютным или относительным путем:

Set thisFolder = FSys.GetFolder("с:\windows\desktop")

Здесь переменная thisFolder

представляет Рабочий стол. Ее свойства и методы можно использовать для управления папками Рабочего стола. Свойство Size можно использовать для определения размера папки (включая подпапки), свой­ство DateCreated — для определения даты создания папки и т.д. Методы и свойства объекта Folder рассмотрены далее в этой главе.

GetFileName. Этот метод возвращает последний компонент заданного пути, который является именем файла с расширением. Для получения имени файла метод обычно вызывается с объектом типа File в качестве аргумента. Без метода GetFileName пришлось бы разрабатывать специальную функцию для выделения имени файла из полной спецификации пути.

Примечание

Метод GetFileName обрабатывает свой аргумент независимо от того, существует ли заданный путь.


Содержание раздела