Коллекция ASP FileSystemObject недоступна по индексу
-
21-08-2019 - |
Вопрос
Я схожу с ума? Я не могу найти способ получить первый файл в папке с FileSystemObject (классический ASP).С большинством коллекций можно подумать, что индекс 0 или 1 может работать, но IIS говорит: «Неверный вызов процедуры или аргумент».
Ни одна из этих последних двух строк не работает:
Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
Response.Write oFiles(0).Name
Response.Write oFiles.Item(1).Name
Я очень глуп, или нет способа использовать индекс для доступа к этой конкретной коллекции?
Решение
Коллекция файлов не является массивом и не содержит функций произвольного доступа.Если вам абсолютно необходима эта функциональность, то самым близким способом ее имитации будет перебор папки и создание нового массива, содержащего имена найденных файлов, использование этого нового массива в качестве источника с произвольным доступом и создание объектов File из Значения массива.
ReDim FileArray(oFiles.Count)
i = 0
For Each oFile In oFiles
FileArray(i) = oFile.Name
i = i + 1
Next
Set oFile = oFileScripting.GetFile(sFolder + "\" + FileArray(0))
Я бы, конечно, не рекомендовал этого, если этого вообще можно избежать.
Другие советы
Нет, но вы можете их перечислить и отслеживать индекс самостоятельно:
Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
i = 0
For Each oFile In oFiles
Response.Write i & " = " & oFile.Name
i = i + 1
Next