При использовании
File System Object (сокращенно FSO)
работа с файлами, папками и дисками значительно упрощается, чем при
использовании стандартных операторов Visual Basic.
Поэтому благодаря использовании FSO возможно более
простое выполнение операций с объектами файловой системы, не требующих от
программиста больших усилий.
При этом это наиболее простой способ работы с файлами и
текстовыми данными из VBScript, что очень часто бывает
необходимым при создании ASP, таких как гостевые книги,
форумы и чаты.
Так вот, для
использования FSO вам нужно подключить библиотеку
Microsoft Scripting Runtime. После этого, для получения доступа
к возможностям библиотеки вам нужно объявить ее, что можно сделать двумя
способами:
Dim myFSO As
Scripting.FileSystemObject
Private Sub
Form_Load()
Set myFSO = New Scripting.FileSystemObject
End Sub
Или так:
Dim myFSO As
Object
Private Sub Form_Load()
Set myFSO = CreateObject("Scripting.FileSystemObject")
End Sub
Лично мне
нравиться второй вариант, поэтому я буду использовать его.
Вот мы подключили
библиотеку, теперь пора проверить ее возможности. Помещаем на форму два
текстовых окна, рядом лейблы и пишем для первого - имя файла, а для второго
текст. Теперь добавляем кнопку и следующий код.
Private Sub
Command1_Click()
Dim myFSO As Object 'Объявляю
объектную переменную
Dim myTS As TextStream 'Объявляем
текстовый поток
Set myFSO = CreateObject("Scripting.FileSystemObject")
'Создаем объект файловой системы
Set myTS = myFSO.CreateTextFile(Text1.Text, True)
'Открываем поток создавая файл,
перезаписывая существующий (True)
myTS.Write Text2.Text 'Пишем
содержимое второго текстового окна
myTS.Close 'Закрываем
поток
Set myFSO = Nothing 'Чистим
память от наших файловых объектов
End Sub
В принципе можно
записать и по другому. При открытии файла для чтения строки выглядят так:
Set myTS = fso.OpenTextFile("c:\test.txt", ForWriting)
Теперь переделаем эту программу для чтения данных из файла. Делаем для text2 multiline=true,
что бы отображать все содержимое нашего файла. Добавляете следующий код в событие клика по кнопке.
Private Sub Command1_Click()
Dim myFSO As Object
Dim myTS As TextStream
Set myFSO = CreateObject("Scripting.FileSystemObject")
Dim myfile As File 'Объявляем файловую переменную
Set myfile = myFSO.GetFile(Text1.Text) 'Присваеваем нашей переменной файла - файл, имя которого введено в text1
Set myTS = myfile.OpenAsTextStream(ForReading) 'Открываем для чтения
Text2.Text = myTS.ReadAll ' Читаем весь файл
myTS.Close
End Sub
Теперь приведу методы TextStream:
Write
Пишет в файл.
WriteLine
Пишет в файл одну строку.
WriteBlankLines
Пишет заданное количество строк.
Skip
Пропускает заданное число символов.
SkipLine
Пропускает одну строку.
Read
Читает.
ReadAll
Читает все содержимое файла.
ReadLine
Читает строку.
Close
Закрывает текстовый поток.
Мы научились (я надеюсь ;-) работать с текстовыми файлами, а теперь на плохо бы научиться работать с файлами и папками вообще.
Для этого существуют следующие методы:
CopyFile
Копирует
файлы.
CopyFolder
Копирует
папки.
MoveFile
Перемещает
файлы.
MoveFolder
Перемещает
папки.
DeleteFile
Удаляет файлы.
DeleteFolder
Удаляет папки.
GetParentFolderName
Получает имя
доминантной папки.
GetAbsolutePathName
Получает
полный путь.
GetDriveName
Получает имя
устройства.
GetFileName
Получает имя
файла
FileExist
Проверяет
наличие файла.
FolderExist
Проверяет
наличие папки.
DriveExist
Проверяет
наличие устройства.
GetSpecialFolder
Получает путь
к папкам системы. Temp,System32,System,Windows.
Использование большинства этих методов одинаково, поэтому разберу наиболее сложные.
Копирование/перемещение файлов и папок.
myFSO.CopyFile "File1","File2", True/False ' указывает перезаписывать файл или нет.
Аналогично перемещение, только вместо Copy - Move.
Теперь немного поработаем с устройствами. Создайте форму, на которой разместите текстовое окно и кнопу. В код клика по кнопке добавляете следующее:
Private Sub Command1_Click()
Dim myFSO As Object
Dim myDRV As Drive
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myDRV = myFSO.GetDrive(myFSO.GetDriveName(Text1.Text))
'Диск
задается в текстовом поле text1, обязательно так
X:
!
a = "Имя тома:
" & myDRV.VolumeName & vbCrLf
b = "Доступное
пространство: " & myDRV.AvailableSpace /
1048576 & " MB" & vbCrLf
c = "Серийный номер:
" & myDRV.SerialNumber & vbCrLf
d = "Тип устройства:
" & myDRV.DriveType & vbCrLf
e = "Общий размер:
" & myDRV.TotalSize & vbCrLf
f = "Сетевое имя:
" & myDRV.ShareName & vbCrLf
g = "Готовнорсть:
" & myDRV.IsReady
Set myFSO = Nothing
MsgBox a & b & c & d & e & f & g, vbInformation, "Информация о
диске"
End Sub
Не правда ли, удобно?
Не нужно лезть в дебри API, все уже
сделано за вас. Но учтите, что в данную функцию буква диска должна входить с
двоеточием, иначе будет ошибка.
При работе с папками их
создание осуществляется командой CreateFolder, так же как
и создание текстового файла.
При работе с файлами и папками
немного отличается их определение. Для папок и файлов оно выглядит так:
Private Sub
Command1_Click()
Dim myFSO As Object
Dim myFLDR As Folder
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myFLDR = myFSO.GetFolder(Text1.Text) 'Существенное
отличие от устройств
a = "Доминантная папка:
" & myFLDR.ParentFolder & vbCrLf
b = "Атрибуты:
" & myFLDR.Attributes
Set myFSO = Nothing
MsgBox a & b
End Sub
Для работы с файлами не
изменяйте форму, а только перепишите код:
Private Sub Command1_Click()
Dim myFSO As Object
Dim myFL As File
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myFL = myFSO.GetFile(Text1.Text)
a = "Место расположения: " &
myFL.ParentFolder & vbCrLf
b = "Атрибуты: " &
myFL.Attributes & vbCrLf
c = "Создан: " &
myFL.DateCreated & vbCrLf
d = "Последний раз запрашивался:
" & myFL.DateLastAccessed &
vbCrLf
e = "Последний раз изменялся: "
& myFL.DateLastModified &
vbCrLf
f = "Размер: " &
myFL.Size & "
байт"
Set myFSO = Nothing
MsgBox a & b & c & d & e & f
End Sub
При таком способе работы
становятся доступны методы вроде Delete, Copy,
Move, OpemAsTextStream. А для папок CreateTextFile.
Вот основные методы работы с
объектами файловой системы с помощью Microsoft Scripting Runtime,
и эти методы очень помогают при создании ASP работающих с
файлами и папками.