4 Stimmen

Warum kann das Ruby File#read oder File#readlines nur einmal verwendet werden?

Warum kann Ruby's File#read et File#readlines nur einmal verwendet werden?

Zum Beispiel:

txt = File.open "test.txt"
puts txt.read  # returns the content
puts txt.read  # returns ""

17voto

Jordan Running Punkte 96893

Wenn Sie anrufen File.open Sie öffnen eine E/A-Strom zur Datei. Intern hat der Stream einen "Cursor", der angibt, aus welchem Teil des Streams Sie zuletzt gelesen haben. Wenn Sie File#read ohne Längenargument, liest es vom Cursor (der am Anfang der Datei beginnt, wenn Sie sie öffnen) bis zum Ende des Streams, d.h. dem Ende der Datei. Dabei wird auch der Cursor an das Ende der Datei verschoben. Wenn Sie die Funktion read wieder, dann ist der Cursor immer noch am Ende der Datei, und da es nichts mehr zu lesen gibt, gibt er nichts zurück ( "" ).

Wenn Sie die Datei ein zweites Mal lesen müssen, können Sie den Cursor an den Anfang des Streams zurückbewegen, indem Sie File#rewind .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X