Ergreift eine zufällige Zeile aus der Datei

8

Ich habe keine Ahnung, wie ich das machen soll. Wo soll ich anfangen? Ich habe das gegooglet und es kam nicht zu einem Ergebnis, wie man eine zufällige Zeile aus einer Textdatei zieht.

Das einzige, was ich gefunden habe, ist Ссылка , aber es funktioniert nicht. Wie kann ich eine zufällige Zeile aus einer Textdatei lesen?

    
mike 15.11.2012, 05:33
quelle

3 Antworten

9

Sie sollten wahrscheinlich die Standardbibliothekenfunktion node.js zum Lesen von Dateien fs.readFile sehen und enden mit etwas in der Art von:

%Vor%

Wenn das Lesen des Ganzen und das Aufteilen nicht möglich ist, dann werfen Sie einen Blick auf dieser Stapelüberlauf für Ideen.

    
kieran 15.11.2012 05:40
quelle
3

Ich habe keinen Knoten, um Code zu testen, daher kann ich Ihnen keinen genauen Code geben, aber ich würde etwas wie das tun:

  1. Holen Sie sich die Dateigröße in Bytes, wählen Sie einen zufälligen Byte-Offset
  2. Öffnen Sie die Datei als Stream
  3. Verwenden Sie dieses Snippet , um Zeilen auszugeben (oder readline , aber zuletzt hatte ich einen fiesen Bug, bei dem es im Prinzip nicht funktionierte)
  4. Behalten Sie Ihre Position in der Datei beim Lesen im Auge. Wenn Sie den gewählten Offset übergeben haben, wählen Sie diese Zeile aus und geben Sie sie zurück.

Beachten Sie, dass dies nicht völlig zufällig ist. Längere Zeilen werden stärker gewichtet, aber es ist der einzige Weg, dies zu tun, ohne die ganze Datei zu lesen, um eine Anzahl von Zeilen zu erhalten.

Mit dieser Methode können Sie eine "zufällige" Zeile erstellen, ohne die gesamte Datei im Speicher zu behalten.

    
Brad 15.11.2012 05:44
quelle
0

Ich kann Ihnen einen Vorschlag machen, da ich keinen Demo-Code habe

  1. Lesen Sie die Datei zeilenweise mit buffered reader
  2. Speichern Sie jede Zeile in einem String-Array
  3. Erstellen Sie eine Methode int returnRandom(arraySize)
  4. Übergeben Sie die Array-Größe an die Funktion
  5. Berechne eine Zufallszahl zwischen 0 bis arraySize
  6. Gib die Zufallszahl zurück
  7. Drucken Sie den angegebenen Index aus Ihrem String-Array
quelle

Tags und Links