File System Object, Basic, Програмування, статті

Гайдар Магдануров, 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 . Или
заходите на мой сайт gmsvb.h1.ru
посвященный программирование для Web.
Только вы не найдете там ASP, т.к. все здесь на
VBS и мне ли делать лишнюю работу ;-).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*