СТАТЬЯ |
12.09.01
|
FSO - тяжелая артиллерия VB6
Статья была опубликована на сайте www.citforum.ru
Работа с папками
Этот список показывает общие задачи работы с папками и методы для их выполнения:
Задача | Метод |
Создать папку | FileSystemObject.CreateFolder |
Удалить папку | Folder.Delete или FileSystemObject.DeleteFolder |
Переместить папку | Folder.Move или FileSystemObject.MoveFolder |
Копировать папку | Folder.Copy или FileSystemObject.CopyFolder |
Возвратить имя папки | Folder.Name |
Выяснить, существует ли папка на дисководе | FileSystemObject.FolderExists |
Получить образец существующего объекта Folder | FileSystemObject.GetFolder |
Выяснить имя папки, родителя папки | FileSystemObject.GetParentFolderName |
Выяснить путь системных папок | FileSystemObject.GetSpecialFolder |
Пример ниже показывает использование объектов Folder и FileSystemObject для управления папками и получения информацию о них:
Private Sub Command10_Click() 'Получаем образец FileSystemObject Dim fso As New FileSystemObject, fldr As Folder, s As String ' Объект Get Drive Set fldr = fso.GetFolder("c:") ' Печатаем родительское имя папки Debug.Print "Parent folder name is: " & fldr ' Печатаем имя дисковода Debug.Print "Contained on drive " & fldr.Drive ' Печатаем имя корневой папки If fldr.IsRootFolder = True Then Debug.Print "This folder is a root folder." Else Debug.Print "This folder isn't a root folder." End If ' Создаем новую папку объектом FileSystemObject fso.CreateFolder ("c:\Bogus") Debug.Print "Created folder C:\Bogus" ' Печатаем основное имя папки Debug.Print "Basename = " & fso.GetBaseName("c:\bogus") ' Удаляем недавно созданную папку fso.DeleteFolder ("c:\Bogus") Debug.Print "Deleted folder C:\Bogus" End Sub
Работа с файлами
Вы можете работать с файлами в Visual Basic как используя новые объектно-ориентированные методы типа Copy, Delete, Move и OpenAsTextStream, так и с помощью старых функций - Open, Close, FileCopy, GetAttr и т.д. Обратите внимание, что вы можете перемещать, копировать или удалять файлы независимо от типа файла. Имеются две главных категории манипулирования файлами:
Создание файлов и добавления данных с помощью File System Objects
Есть три способа создать последовательный текстовый файл (иногда упоминаемый как "текстовый поток", text stream). Один путь состоит в том, чтобы использовать метод CreateTextFile. Например, создаем пустой текстовый файл:
Dim fso As New FileSystemObject, fil As File Set fil = fso.CreateTextFile("c:\testfile.txt", True)
Обратите внимание, что текущая версия FSO еще не поддерживает создание произвольных (random) или двоичных (binary) файлов.
Другой путь состоит в том, чтобы использовать метод OpenTextFile объекта FileSystemObject с установкой флага ForWriting:
Dim fso As New FileSystemObject, ts As New TextStream Set ts = fso.OpenTextFile("c:\test.txt", ForWriting)
Третий путь - вы можете использовать метод OpenAsTextStream с установкой флага ForWriting:
Dim fso As New FileSystemObject, fil As File, ts As TextStream Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile ("test1.txt") Set fil = fso.GetFile("test1.txt") Set ts = fil.OpenAsTextStream(ForWriting)
Добавление данных к файлу
Когда текстовый файл создан, вы можете добавлять в него данные. Для этого необходимо:
Чтобы открыть файл вы можете использовать любой из двух методов: метод OpenAsTextStream объекта File или метод OpenTextFile объекта FileSystemObject.
Чтобы записать данные в открытый текстовый файл, используйте методы Write или WriteLine объекта TextStream. Единственное различие между Write и WriteLine - то, что WriteLine добавляет символы новой строки к концу строки. Если Вы хотите добавлять символы новой строки в текстовый файл без записи других символов, используйте метод WriteBlankLines.
Чтобы закрыть открытый файл, используйте метод Close объекта TextStream.
Sub Create_File() Dim fso, txtfile Set fso = CreateObject("Scripting.FileSystemObject") Set txtfile = fso.CreateTextFile("c:\testfile.txt", True) 'Запись линии txtfile.Write ("This is a test. ") 'Запись линии с символом newline txtfile.WriteLine("Testing 1, 2, 3.") 'Запись трех символов newline в файл txtfile.WriteBlankLines(3) txtfile.Close End Sub
Чтение файлов с помощью FSO
Для чтения данных из текстового файла используйте методы Read, ReadLine или ReadAll объекта TextStream:
Задача | Метод |
Чтение определенного числа символов из файла | Read |
Чтение строки целиком (но не включая символ новой строки) | ReadLine |
Чтение текстового файла целиком | ReadAll |
Если вы используете метод Read или ReadLine и хотите перейти к определенной части файла, воспользуйтесь методами Skip или SkipLine для пропуска определенного числа символов (или, соответственно, строк).
Полученный в результате использования этих методов текст может быть сохранен в символьной переменной и обрабатываться функциями Left, Right и Mid. Обратите внимание, что константа vbNewLine содержит символ или символы (в зависимости от операционной системы) перевода курсора на следующую строку (возврат каретки). Некоторые символьные переменные могут содержать в конце эти непечатаемые символы.
Sub Read_Files() Dim fso As New FileSystemObject, txtfile Dim fil1 As File, ts As TextStream Set txtfile = fso.CreateTextFile("c:\testfile.txt", True) MsgBox "Writing file" ' Запись линии Set fil1 = fso.GetFile("c:\testfile.txt") Set ts = fil1.OpenAsTextStream(ForWriting) ts.Write "Hello World" ts.Close ' Чтение содержания файла Set ts = fil1.OpenAsTextStream(ForReading) s = ts.ReadLine MsgBox s ts.Close End Sub
Перемещение, копирование и удаление файлов
FSO имеет два метода для перемещения, копирования и удаления файлов:
Задача | Метод |
Переместить файл | File.Move или FileSystemObject.MoveFile |
Скопировать файл | File.Copy или FileSystemObject.CopyFile |
Удалить файл | File.Delete или FileSystemObject.DeleteFile |
Следующий пример создает текстовый файл в корневой директории дисковода с:, пишет в него некоторую информацию, перемещает его в каталог, называемый \tmp, затем копирует его в каталог, называемый \temp и, наконец, удаляет копии из обоих каталогов. Чтобы этот пример корректно сработал, удостоверьтесь, что на диске c: в корневой папке существуют каталоги \tmp и \temp. (Для упрощения примера в него не встроена проверка этого условия. В реальной программе, конечно, необходимо сначала убедиться в существовании целевой папки и при ее отсутствии создать.)
Sub Manip_Files() Dim fso As New FileSystemObject, txtfile, fil1, fil2 Set txtfile = fso.CreateTextFile("c:\testfile.txt", True) MsgBox "Writing file" txtfile.Write ("This is a test.") txtfile.Close MsgBox "Moving file to c:\tmp" ' Код обработки файла в корне C:\ Set fil1 = fso.GetFile("c:\testfile.txt") ' Перемещаем файл в директорию \tmp fil1.Move ("c:\tmp\testfile.txt") MsgBox " Копируем файл в c:\temp" ' Копируем файл в \temp fil1.Copy ("c:\temp\testfile.txt") MsgBox "Удаляем файлы" ' Код получения текущих дерикторий файлов Set fil1 = fso.GetFile("c:\tmp\testfile.txt") Set fil2 = fso.GetFile("c:\temp\testfile.txt") ' Удаляем дайлы fil1.Delete fil2.Delete MsgBox "Все!" End Sub
Дополнительная информация
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Отправить
ссылку на страницу по e-mail
Обсудить на форуме Microsoft
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши замечания и предложения
отправляйте автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 12.09.01 |