VBStreets конференция

Целият вкус на програмирането!

  • Списък на форумитеVisual basicVisual Basic 1-6
  • Променете размера на шрифта
  • ЧЗВ
  • вход

Гайдар Магдануров написа: Обект на файловата система

Обектът на файловата система (FSO) улеснява работата с файлове, папки и дискове много по-лесно, отколкото използването на стандартни изрази на Visual Basic. Следователно, благодарение на използването на FSO, е възможно да се извършват операции с обекти на файловата система по-просто, без да се изискват много усилия от програмиста. Освен това това е най-лесният начин за работа с файлове и текстови данни от VBScript, което е много често необходимо при създаването на ASP, като книги за гости, форуми и чатове.

Така че, за да използвате FSO, трябва да включите библиотеката на Microsoft Scripting Runtime. След това, за да получите достъп до възможностите на библиотеката, трябва да го декларирате, което може да се направи по два начина:

Затъмнете myFSO като Scripting.FileSystemObject

Частна подформа Form_Load ()
Задайте myFSO = New Scripting.FileSystemObject
Крайна под

Затъмнете myFSO като обект

Частна подформа Form_Load ()
Задайте myFSO = CreateObject ("Scripting.FileSystemObject")
Крайна под

Лично аз харесвам втория вариант, така че ще го използвам.

Сега сме свързали библиотеката, сега е време да проверим нейните възможности. Поставяме две текстови полета върху формуляра, до етикетите и пишем за първия - името на файла, а за втория текст. Сега добавете бутона и следния код.

Частна подкоманда1_Click ()
Dim myFSO As Object 'Декларирам променлива на обект
Dim myTS As TextStream 'Декларирайте текстов поток
Задайте myFSO = CreateObject ("Scripting.FileSystemObject") 'Създайте обект на файлова система
Set myTS = myFSO.CreateTextFile (Text1.Text, True) 'Отворете потока, като създадете файл, като презапишете съществуващия (True)
myTS.Write Text2.Text 'Писане на съдържанието на второто текстово поле
myTS.Close 'Затворете потока
Set myFSO = Nothing 'Почистете паметта от нашите файлови обекти
Крайна под

По принцип може да се пише по различен начин. При отваряне на файл за четене редовете изглеждат така:

Задайте 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 Задайте myTS = myfile.OpenAsTextStream (ForReading) 'Отворете за четене Text2.Text = myTS.ReadAll' Прочетете целия файл myTS.Close End Sub
Сега ще дам методите на TextStream:

Пишете Пишете във файл.
WriteLine Записва един ред във файла.
WriteBlankLines Записва посочения брой редове.
Skip Пропуска зададения брой знаци.
SkipLine Пропуска един ред.
Прочетете Прочетете.
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 'показва дали да се презапише файлът или не.
По същия начин, преместване, само вместо Копиране - Преместване.

Сега нека работим малко с устройствата. Създайте формуляр, върху който да поставите текстовото поле и бутон. Добавете следното към кода за кликване върху бутона:
Частна подкоманда1_Click ()
Затъмнете myFSO като обект
Затъмнете myDRV As Drive
Задайте 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
Задайте myFSO = Нищо
MsgBox a & b & c & d & e & f & g, vbInformation, "Информация за диска"
Крайна под

Не е ли удобно? Няма нужда да навлизате в джунглата на API, всичко вече е направено за вас. Но имайте предвид, че тази функция трябва да включва буква на устройството с двоеточие, в противен случай ще има грешка.

При работа с папки тяхното създаване се извършва от командата CreateFolder, както и създаването на текстов файл.

Когато работите с файлове и папки, тяхната дефиниция е малко по-различна. За папки и файлове изглежда така:

Частна подкоманда1_Click ()
Затъмнете myFSO като обект
Затъмнете myFLDR като папка
Задайте myFSO = CreateObject ("Scripting.FileSystemObject")
Задайте myFLDR = myFSO.GetFolder (Text1.Text) 'Значително различно от устройствата
a = "Доминираща папка:" & myFLDR.ParentFolder & vbCrLf
b = "Атрибути:" & myFLDR.Attributes
Задайте myFSO = Нищо
MsgBox a & b
Крайна под

За да работите с файлове, не променяйте формата, просто пренапишете кода:

Частна подкоманда1_Click ()
Затъмнете myFSO като обект
Затъмнете myFL като файл
Задайте myFSO = CreateObject ("Scripting.FileSystemObject")
Задайте 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 & "байта"
Задайте myFSO = Нищо
MsgBox a & b & c & d & e & f
Крайна под

С този начин на работа стават достъпни методи като Delete, Copy, Move, OpemAsTextStream. И за папки CreateTextFile.

Ето основните методи за работа с обекти на файлова система с помощта на Microsoft Scripting Runtime и тези методи са много полезни при създаването на ASP, работещ с файлове и папки.