Ruby Language
Datei- und E / A-Vorgänge
Suche…
Parameter
Flagge | Bedeutung |
---|---|
"r" | Schreibgeschützt, beginnt am Dateianfang (Standardmodus). |
"r +" | Lese- und Schreibzugriff beginnt am Anfang der Datei. |
"w" | Nur Schreiben, kürzt die vorhandene Datei auf null Länge oder erstellt eine neue Datei zum Schreiben. |
"w +" | Mit Lese- und Schreibzugriff wird die vorhandene Datei auf Null gekürzt oder eine neue Datei zum Lesen und Schreiben erstellt. |
"ein" | Nur schreiben, beginnt am Ende der Datei, falls eine Datei vorhanden ist, erstellt ansonsten eine neue Datei zum Schreiben. |
"a +" | Lese- und Schreibzugriff, beginnt am Ende der Datei, falls eine Datei vorhanden ist, erstellt ansonsten eine neue Datei zum Lesen und Schreiben. |
"b" | Binärdatei-Modus. Unterdrückt die EOL <-> CRLF-Konvertierung unter Windows. Setzt die externe Kodierung auf ASCII-8BIT, sofern nicht ausdrücklich angegeben. (Dieses Flag wird möglicherweise nur in Verbindung mit den obigen Flags File.new("test.txt", "rb") . Zum Beispiel würde File.new("test.txt", "rb") test.txt im read-only Modus als binary öffnen.) |
"t" | Textdatei-Modus. (Dieses Flag wird möglicherweise nur in Verbindung mit den obigen Flags File.new("test.txt", "wt") . Zum Beispiel würde File.new("test.txt", "wt") test.txt im test.txt write-only Modus als text öffnen.) |
Eine Zeichenfolge in eine Datei schreiben
Ein String kann in eine Datei mit einer Instanz der File
Klasse geschrieben werden.
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
Die File
Klasse bietet auch eine Abkürzung für die new
und close
Operationen mit der open
Methode.
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
Für einfache Schreibvorgänge kann eine Zeichenfolge auch direkt mit File.write
in eine Datei File.write
. Beachten Sie, dass dadurch die Datei standardmäßig überschrieben wird.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
Um einen anderen Modus für File.write
, übergeben Sie ihn als Wert eines Schlüssels, der als mode
in einem Hash als anderen Parameter.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
Datei öffnen und schließen
Öffnen und schließen Sie eine Datei manuell.
# Using new method
f = File.new("test.txt", "r") # reading
f = File.new("test.txt", "w") # writing
f = File.new("test.txt", "a") # appending
# Using open method
f = open("test.txt", "r")
# Remember to close files
f.close
Datei automatisch mit einem Block schließen.
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
Holen Sie sich ein einzelnes Zeichen der Eingabe
Im Gegensatz zu gets.chomp
dies nicht auf einen Newline.
Der erste Teil der stdlib muss enthalten sein
require 'io/console'
Dann kann eine Hilfsmethode geschrieben werden:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
Es ist wichtig zu verlassen, wenn control+c
gedrückt wird.
Lesen von STDIN
# Get two numbers from STDIN, separated by a newline, and output the result
number1 = gets
number2 = gets
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb
## or: $ echo -e "1\n2" | ruby a_plus_b.rb
Lesen aus Argumenten mit ARGV
number1 = ARGV[0]
number2 = ARGV[1]
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb 1 2