Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

File System Object

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 и мне ли делать лишнюю работу ;-).



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте