Пример кода, описанные в этом разделе содержится реальный пример, который демонстрирует многие возможности, доступные в FileSystemObject объектной модели. Этот код показывает, как все возможности объектной модели работают вместе, и как использовать эти функции эффективно в вашем собственном коде.
Как использовать кодекс
Обратите внимание, что поскольку этот код достаточно общий характер, дополнительный код и небольшой настройки необходимы, чтобы сделать этот код на самом деле работает на вашей машине. Эти изменения необходимы из-за различных способов вход и выход для пользователя обрабатывается между страницы Active Server Pages и хост Windows Scripting.
Для выполнения этого кода на активной серверной страницы, выполните следующие действия:
Создайте стандартные веб-страницы с расширением. Жерех.
Скопируйте следующий код в этот файл между <BODY> BODY ...</> теги.
Заключите весь код в <%...%> теги.
Перемещение Option Explicit заявление от текущей позиции в коде, чтобы самой верхней части HTML-страницы, позиционирование его еще до открытия <HTML> тега.
Место <%...%> теги Option Explicit заявление, чтобы это работает на стороне сервера.
Добавьте следующий код в конец пример кода:
VBScript
Sub печати (х)
Response.Write "<PRE> & ltFONT FACE =" "Courier New" "SIZE =" "1" ">"
Response.Write х
Response.Write "</ FONT> </ PRE>"
End Sub
Главная
Предыдущий код добавляет печати процедура, которая будет работать на стороне сервера, но отображать результаты на стороне клиента.
Для выполнения этого кода на хост Windows Scripting, используйте следующие шаги:
Закомментируйте все <A теги привязки name=""> </ A>
Добавьте следующий код в конец пример кода:
VBScript
Sub печати (х)
WScript.Echo х
End Sub
Главная
Код содержится в следующем разделе:
VBScript
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''
"FileSystemObject Пример кода
Copyright '1998 Microsoft Corporation. Все права защищены.
'''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
Option Explicit
'''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''
Что касается кода "качества :
"1) Следующий код делает много работы со строками на
"объединения коротких строк вместе с" & "оператора.
" Так как объединение строк стоит дорого, это очень
"неэффективный способ написания кода. Тем не менее, это очень
"в сопровождении способ написания кода, и используется здесь, потому что это
"программа выполняет обширные операции диска, и из-за
"диска намного медленнее, чем операции с памятью, необходимые для
«объединения строк. Имейте в виду, что это демонстрация
"код, а не рабочий код.
'
'2) "Option Explicit" используется, потому что объявленная переменная доступа
"немного быстрее, чем необъявленная переменная доступа. Оно также предотвращает
"ошибок от ползучего в код, например, когда вы опечатки
"DriveTypeCDROM как DriveTypeCDORM.
'
'3) обработка ошибок отсутствует этот код, чтобы сделать код более
читабельным. Хотя меры предосторожности были приняты для того, чтобы
"код не будет ошибки в общих случаях, файловые системы могут быть
"непредсказуемыми. В рабочем коде, использование On Error Resume Next и
"Err объекта в ловушку возможно
Некоторые удобные глобальные переменные
'''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''
Dim TabStop
Dim NewLine
Const TestDrive = "C"
Const TestFilePath = "C: \ Test"
''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
Константы "возвращается Drive.DriveType
'''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''
Const DriveTypeRemovable = 1
Const DriveTypeFixed = 2
Const DriveTypeNetwork = 3
Const DriveTypeCDROM = 4
Const DriveTypeRAMDisk = 5
'''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Константы "возвращается File.Attributes
''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''
Const FileAttrNormal = 0
Const FileAttrReadOnly = 1
Const FileAttrHidden = 2
Const FileAttrSystem = 4
Const FileAttrVolume = 8
Const FileAttrDirectory = 16
Const FileAttrArchive = 32
Const FileAttrAlias ​​= 1024
Const FileAttrCompressed = 2048
''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
'Константы для открытия файлов
'''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''
Const OpenFileForReading = 1
Const OpenFileForWriting = 2
Const OpenFileForAppending = 8
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''
"ShowDriveType
Цель ':
'Создает строку, описывающую типом привода данного диска объекта.
" Демонстрирует следующие
'- Drive.DriveType
'''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''
Функция ShowDriveType (Drive)
Dim S
Select Case Drive.DriveType
Дело DriveTypeRemovable
S = "Съемный"
Дело DriveTypeFixed
S = "Фиксированный"
Дело DriveTypeNetwork
S = "Сеть"
Дело DriveTypeCDROM
S = "CD-ROM"
Дело DriveTypeRAMDisk
S = "RAM Disk"
Case Else
S = "Неизвестный"
End Select
ShowDriveType = S
End Function
'''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
"ShowFileAttr
Цель ':
'генерирует строку с описанием атрибутов файла или папки.
" Демонстрирует следующие
'- File.Attributes
'- Folder.Attributes
''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''
файла Функция ShowFileAttr (File) 'может быть файл или папку,
Dim S
Dim Attr
Attr = File.Attributes
Если Attr = 0 Then
ShowFileAttr = "Обычный"
Exit Function
End If
Если Attr И FileAttrDirectory Тогда S = S & "Справочник"
Если Attr И FileAttrReadOnly Тогда S = S & "только для чтения"
Если Attr И тогда FileAttrHidden S = S & "Hidden"
Если Attr И FileAttrSystem Тогда S = S & "Система"
Если Attr И FileAttrVolume Тогда S = S & "Volume"
Если Attr И FileAttrArchive Тогда S = S & "Архив"
Если Attr И FileAttrAlias ​​Тогда S = S & "Alias"
Если Attr И FileAttrCompressed Тогда S = S & "Сжатый"
ShowFileAttr = S
End Function
'''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''
"GenerateDriveInformation
Цель ':
'Генерирует строки, описывающей текущее состояние
"доступных дисков.
" Демонстрирует следующие
'- FileSystemObject.Drives
'- Итерация диски коллекции
'- Drives.Count
'- Drive.AvailableSpace
'- Drive.DriveLetter
'- Drive.DriveType
'- Drive.FileSystem
'- Drive.FreeSpace
'- Drive.IsReady
" - Drive.Path
'- Drive.SerialNumber
'- Drive.ShareName
'- Drive.TotalSize
'- Drive.VolumeName
'''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''
Функция GenerateDriveInformation (FSO)
Dim Диски
Диск Dim
Dim S
Диски комплект = FSO.Drives
S = "Количество дисков:" & & TabStop Drives.Count & & NewLine NewLine
'Построить первую линию отчета.
S = S & String (2, TabStop) и "Драйв"
S = S & String (3, TabStop) и "Файл"
S = S & TabStop и "Total"
S = S & TabStop и "Свободный"
S = S & TabStop и "Доступный"
S = S & TabStop и "Сериал" & NewLine
'Построить вторую линию отчета.
S = S & "Письмо"
S = S & TabStop и «Путь»
S = S & TabStop и "Тип"
S = S & TabStop и "Готов?"
S = S & TabStop & "Имя"
S = S & TabStop и "Система"
S = S & TabStop и "Космос"
S = S & TabStop и "Космос"
S = S & TabStop и "Космос"
S = S & TabStop и "Количество" и NewLine
"Разделительная линия.
S = S & String (105, "-") & NewLine
для каждого диска в приводах
S = S & Drive.DriveLetter
S = S & TabStop & Drive.Path
S = S & TabStop & ShowDriveType (Drive),
S = S & TabStop & Drive.IsReady
Если Drive.IsReady Затем
Если DriveTypeNetwork = Drive.DriveType Тогда
S = S & TabStop & Drive.ShareName
остальное
S = S & TabStop & Drive.VolumeName
End If
S = S & TabStop & Drive.FileSystem
S = S & TabStop & Drive.TotalSize
S = S & TabStop & Drive.FreeSpace
S = S & TabStop & Drive.AvailableSpace
S = S & TabStop & Hex (Drive.SerialNumber)
End If
S = S & NewLine
Следующая
GenerateDriveInformation = S
End Function
'''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''
"GenerateFileInformation
Цель ':
'Создает строку, описывающую текущее состояние файла.
" Демонстрирует следующие
'- File.Path
'- File.Name
'- File.Type
'- File.DateCreated
'- File.DateLastAccessed
'- File.DateLastModified
'- File.Size
'''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
Функция GenerateFileInformation (Файл)
Dim S
= S & NewLine "Путь:" & & TabStop File.Path
S = S & NewLine и "Name:" & & TabStop File.Name
S = S & NewLine и "Тип:" & & TabStop File.Type
S = S & NewLine и "Attribs:" & & TabStop ShowFileAttr (Файл)
S = S & NewLine и "Создано:" & & TabStop File.DateCreated
S = S & NewLine & "доступ:" & & TabStop File.DateLastAccessed
S = S & NewLine и "изменения:" & & TabStop File.DateLastModified
S = S & NewLine и "Размер" & & TabStop File.Size & NewLine
GenerateFileInformation = S
End Function
'' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''
"GenerateFolderInformation
Цель ':
'Создает строку, описывающую текущее состояние папки.
" Демонстрирует следующие
'- Folder.Path
'- Folder.Name
'- Folder.DateCreated
'- Folder.DateLastAccessed
'- Folder.DateLastModified
'- Folder.Size
''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''
Функция GenerateFolderInformation (Folder)
Dim S
S = "Путь:" & & TabStop Folder.Path
S = S & NewLine и "Name:" & & TabStop Folder.Name
S = S & NewLine и "Attribs:" & TabStop И ShowFileAttr (Папка)
S = S & NewLine и "Создано:" & & TabStop Folder.DateCreated
S = S & NewLine и "доступ:" & & TabStop Folder.DateLastAccessed
S = S & NewLine и "изменения:" & & TabStop Folder.DateLastModified
S = S & NewLine и "Размер:" & & TabStop Folder.Size & NewLine
GenerateFolderInformation = S
End Function
'''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''
"GenerateAllFolderInformation
"Цель :
'генерирует строку, описывающую текущее состояние
"папку и все файлы и подпапки.
' Демонстрирует следующие
'- Folder.Path
'- Folder.SubFolders
'- Folders.Count
'''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''
Функция GenerateAllFolderInformation (Folder)
Dim S
Dim вложенные
подпапки Dim
Dim Файлы
Dim файла
S = "Папка:" & & TabStop Folder.Path & & NewLine NewLine
Установить Files = Folder.Files
Если 1 = Files.Count Тогда
S = S & "Существует один файл" & NewLine
остальное
S = S & " Есть "& & Files.Count" файлы "& NewLine
End If
Если Files.Count <> 0 Then
для каждого файла в файлы
S = S & GenerateFileInformation (Файл)
Следующая
End If
Установить Вложенные = Folder.SubFolders
Если 1 = подпапки. Затем граф
S = S & NewLine & "Существует 1 подпапку" & & NewLine NewLine
остальное
S = S & NewLine и "Есть" и SubFolders.Count и "подпапки" & & NewLine NewLine
End If
Если SubFolders.Count < > 0 Then
для каждой вложенной папки в подпапках
S = S & GenerateFolderInformation (подпапки)
Следующая
S = S & NewLine
для каждой вложенной папки в подпапках
S = S & GenerateAllFolderInformation (подпапки)
Следующая
End If
GenerateAllFolderInformation = S
End Function
''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
"GenerateTestInformation
Цель ':
'Создает строку, описывающую текущее состояние C: \ Test
. папку и все файлы и подпапки
" Демонстрирует следующие
'- FileSystemObject.DriveExists
'- FileSystemObject.FolderExists
'-
GenerateTestInformation (FSO)
Dim TestFolder
Dim S
Если не FSO.DriveExists (TestDrive) Затем Exit Function
If Not FSO.FolderExists (TestFilePath) Затем Exit Function
TestFolder комплект = FSO.GetFolder (TestFilePath)
GenerateTestInformation = GenerateAllFolderInformation (TestFolder)
End Function
''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
"DeleteTestDirectory
'Цель:
'Очищает тест каталог.
" Демонстрирует следующие
'- FileSystemObject.GetFolder
'- FileSystemObject.DeleteFile
'- FileSystemObject.DeleteFolder
'- Folder.Delete
'- File.Delete
'''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
Sub DeleteTestDirectory (FSO)
Dim TestFolder
Dim подпапку
Dim файлов
<A NAME="driveinfo"> </ A>
"Два способа удаления файла:
FSO.DeleteFile (TestFilePath & "\ LoremIpsum \ Paragraph1.txt")
Установить Файл = FSO.GetFile (TestFilePath & "\ LoremIpsum \ Paragraph2.txt")
File.Delete
"Два способа удалить папку:
FSO.DeleteFolder (TestFilePath & "\ LoremIpsum")
FSO.DeleteFile (TestFilePath & "\ ReadMe.txt")
Установить TestFolder = FSO.GetFolder (TestFilePath)
TestFolder.Delete
End Sub
''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''
"CreateLyrics
Цель ':
'строит пару текстовых файлов в папке.
" Демонстрирует следующие
'- FileSystemObject.CreateTextFile
'- TextStream.WriteLine
'- TextStream.Write
'- TextStream.WriteBlankLines
'- TextStream.Close
'''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
Sub CreateLyrics (Folder)
Dim TextStream
<A NAME="deletefile"> </ A>
Установить TextStream = Folder.CreateTextFile ("Paragraph1.txt")
<A NAME="createtextfilewritetofile"> </ A>
"Обратите внимание, что это не добавляет строки в файл.
TextStream.Write ("Lorem Ipsum - Пункт 1")
TextStream.WriteBlankLines (1)
TextStream.WriteLine (".. Lorem Ipsum боль сидеть Амет, consectetuer adipiscing элит Меценат сем")
TextStream.WriteLine ("Донец ... анте Nulla facilisi Phasellus interdum Nulla пипс Morbi laoreet пипс ").
TextStream.WriteBlankLines (2)
TextStream.Close
Установить TextStream = Folder.CreateTextFile ("Paragraph2.txt")
TextStream.WriteLine ("Lorem Ipsum - пункт 2" )
TextStream.WriteBlankLines (1)
TextStream.WriteLine ("Nullam Nulla quam, sollicitudin ут, lobortis ornare, tristique, augue").
TextStream.WriteLine ("преддверия сем Felis, fermentum ЕС, volutpat ЕС, vulputate eget, Элит". )
TextStream.WriteBlankLines (2)
TextStream.Close
Sub End
'''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''
"GetLyrics
Цель ':
'Отображение содержимого песни файлы.
' Демонстрирует следующие
'- FileSystemObject.OpenTextFile
'- FileSystemObject.GetFile
'- TextStream.ReadAll
'- TextStream.Close
'- File.OpenAsTextStream
'- TextStream.AtEndOfStream
'- TextStream.ReadLine
'''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''
Функция GetLyrics (FSO)
Dim TextStream
Dim S
Dim Файл
"Есть несколько способов открыть текстовый файл, а несколько
"способов чтения данных из файла. Вот два пути
", чтобы сделать каждый:
Установить TextStream = FSO.OpenTextFile (TestFilePath & "\ LoremIpsum \ Paragraph1.txt", OpenFileForReading)
<A NAME="closereadfromfile"> </ A>
S = TextStream.ReadAll & & NewLine NewLine
TextStream . Закрыть
Установить Файл = FSO.GetFile (TestFilePath & "\ LoremIpsum \ Paragraph2.txt")
Установить TextStream = File.OpenAsTextStream (OpenFileForReading)
Do While Not TextStream.AtEndOfStream
S = S & TextStream.ReadLine & NewLine
Loop
TextStream.Close
GetLyrics = S
End Function
''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''
"BuildTestDirectory
'Цель:
'Построение иерархии каталогов для демонстрации FileSystemObject.
' Мы будем строить иерархию в следующем порядке:
'C: \ Test
'C: \ Test \ ReadMe.txt
'C: \ Test \ LoremIpsum
'C: \ Test \ LoremIpsum \ Paragraph1.txt
'C: \ Test \ LoremIpsum \ Paragraph2.txt
'Демонстрирует следующие
'- FileSystemObject.DriveExists
'- FileSystemObject.FolderExists
'- FileSystemObject.CreateFolder
'- FileSystemObject.CreateTextFile
'- Folders.Add
'- Folder.CreateTextFile
'- TextStream.WriteLine
'- TextStream.Close
''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''
Функция BuildTestDirectory (FSO)
Dim TestFolder
Dim вложенные
подпапки Dim
Dim TextStream
"выручить, если (а) диск не существует, или если (б) каталог строится
'уже существует.
Если не FSO.DriveExists (TestDrive) Затем
BuildTestDirectory = False
Exit Функция
End If
Если FSO.FolderExists (TestFilePath) Затем
BuildTestDirectory = False
Exit Функция
End If
Установить TestFolder = FSO.CreateFolder (TestFilePath)
Установить TextStream = FSO.CreateTextFile (TestFilePath & "\ ReadMe.txt")
TextStream.WriteLine ("Мой образец текста коллекция")
TextStream.Close
Установить Вложенные = TestFolder.SubFolders
Установить подпапку = SubFolders.Add ("LoremIpsum")
CreateLyrics подпапку
BuildTestDirectory = True
End Функция
''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
"основной программе
на первом месте ", он создает тестовый каталог, а также некоторые вложенные папки
и файлы. Затем, он сбрасывает информацию о доступных
"дисков, так и о тесте каталог, а затем очищает
"все снова.
'''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''
Sub Main
Dim FSO
"Настройка глобальных данных.
TabStop = Chr (9)
NewLine = Chr (10)
<A NAME="folderinfo"> </ A>
Установить FSO = CreateObject ("Scripting.FileSystemObject")
If Not BuildTestDirectory (FSO) Затем
Печать " Испытание каталог уже существует или не может быть создан. продолжаться не может. "
Exit Sub
End If
печати GenerateDriveInformation (FSO) & NewLine & NewLine
печати GenerateTestInformation (FSO) & NewLine & NewLine
печати GetLyrics (FSO) & NewLine & NewLine
DeleteTestDirectory (FSO)
End Sub
|