div.main {margin-left: 20pt; margin-right: 20pt}
File System Object
Гайдар Магдануров, VBStreets
При использовании
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 работающих с
файлами и папками.
С вопросами мыльте
gmsvb@yandex.ru . Или
заходите на мой сайт http://gmsvb.h1.ru
посвященный программирование для Web.
Только вы не найдете там ASP, т.к. все здесь на
VBS и мне ли делать лишнюю работу ;-).
|