| СТАТЬЯ |  
      
 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  |