Вопрос

Я схожу с ума? Я не могу найти способ получить первый файл в папке с 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top