Man könnte so etwas tun:
<cfscript>
pag = FileOpen(ExpandPath('./text.txt'), "read");
counter = 0;
randomLine = randRange(1, 10000);
while(NOT FileisEOF(myfile)) {
counter++;
if (counter==randomLine) {
x = FileReadLine(pag); // read line
WriteOutput("#x#");
break;
}
}
FileClose(pag);
</cfscript>
Es ist nicht sehr effizient, es so zu tun, und auch stützt sie sich auf die Anzahl der Zeilen in der Datei zu kennen. Wenn Sie es mehrere Male tun müssen, dann wäre es viel besser, die Datei einmal zu lesen und jede Zeile in einer Datenbank oder einem persistenten Speicherbereich zu speichern. Sie könnten dann ganz leicht jeden Datensatz daraus entnehmen. Zum Beispiel:
<cfscript>
// read the file once
pag = FileOpen(ExpandPath('./text.txt'), "read");
lines = [];
while(NOT FileisEOF(myfile)) {
arrayAppend(lines, FileReadLine(pag)); // read line
}
FileClose(pag);
// store the `lines` in a persistent scope or db etc
// here I'm using application scope as a simple example
application.filelines = lines;
</cfscript>
Dann können Sie eine zufällige Zeile greifen ohne erneute Lesen der Datei
<cfscript>
totalLines = arrayLen(application.filelines);
randomLine = randRange(1, totalLines);
writeOutput(application.filelines[randomLine]);
</cfscript>
* Eine chr (10) getrennte Liste * Dies kann zu zusätzlichen Zeichen führen. Zeilenbegrenzer variieren um o/s. – Leigh