2009-05-11 4 views
3

Bin ich verrückt? Ich finde keine Möglichkeit, die erste Datei in einem Ordner mit dem FileSystemObject (klassisches ASP) zu erhalten. Bei den meisten Sammlungen würden Sie denken, dass der Index 0 oder 1 funktionieren könnte, aber IIS sagt "Ungültiger Prozeduraufruf oder ungültiges Argument".ASP FileSystemObject Sammlung kann nicht durch Index zugegriffen werden

Keines dieser letzten 2 Zeilen arbeiten:

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 

bin ich mega-dumm, oder gibt es keine Möglichkeit, einen Index zu verwenden, um diese besondere Sammlung zugreifen?

Antwort

3

Die Dateien Collection ist kein Array, und enthält keine Schreib-Lese-Funktionalität. Wenn Sie diese Funktionalität unbedingt benötigen, wäre es am nächsten, den Ordner zu durchlaufen und ein neues Array zu erstellen, das die Namen der gefundenen Dateien enthält, dieses neue Array als Quelle für den wahlfreien Zugriff zu verwenden und aus der Datei Objekte zu erstellen Array-Werte

Ich würde sicherlich nicht empfehlen, wenn es überhaupt vermeidbar ist.

+0

Ich dachte (im Allgemeinen), dass Sammlungen zufällig nach Artikel bumber zugegriffen werden könnten? Leider erwähnt dieser Artikel nicht FileSystemObject - http://msdn.microsoft.com/en-us/library/ms525228.aspx –

+1

Im Allgemeinen können Sammlungen über Indexnummerierung zugegriffen werden, aber die Dateisammlung ist keine normale Sammlung. Es hat eine Eigenschaft item, aber es scheint, dass der Schlüssel, den es verwendet, Dateiname ist. c.f. http://www.devguru.com/Technologies/vbscript/quickref/filescoll_item.html – dpmattingly

0

Nein, aber Sie können sie den Index selbst aufzuzählen und verfolgen:

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 
+0

Ja, die Schleife ist einfach zu machen, aber wenn Sie nur die erste greifen und sie sofort verwenden wollen .....?! –

Verwandte Themen