Не удается получить доступ к коллекции ASP FileSystemObject по индексу - PullRequest
3 голосов
/ 11 мая 2009

Я схожу с ума? Я не могу найти способ получить первый файл в папке с 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

Я мега глупый или нет способа использовать индекс для доступа к этой конкретной коллекции?

Ответы [ 2 ]

3 голосов
/ 13 мая 2009

Коллекция файлов не является массивом и не содержит функции произвольного доступа. Если вам абсолютно необходимы эти функции, имитировать ближайшую вещь будет итерация по папке и создание нового массива, содержащего имена найденных файлов, использование этого нового массива в качестве источника произвольного доступа и создание объектов 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))

Я, конечно, не рекомендовал бы это, если этого вообще можно избежать.

0 голосов
/ 11 мая 2009

Нет, но вы можете перечислить их и отследить индекс самостоятельно:

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
...