代码之家  ›  专栏  ›  技术社区  ›  Magnus Smith

索引无法访问ASP FileSystemObject集合

  •  3
  • Magnus Smith  · 技术社区  · 16 年前

    我疯了吗? 我找不到一种方法来保存文件系统对象(经典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 回复  |  直到 16 年前
        1
  •  3
  •   dpmattingly    16 年前

    文件集合不是数组,并且不包含随机访问功能。如果您绝对需要这个功能,最接近模仿它的方法是遍历文件夹并创建一个包含找到的文件名的新数组,使用这个新数组作为随机访问源,并从数组值创建文件对象。

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

    如果这是完全可以避免的,我当然不会推荐。

        2
  •  0
  •   Mark Brackett    16 年前

    不,但您可以自己枚举它们并跟踪索引:

    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