Ruby Language
Bestands- en I / O-bewerkingen
Zoeken…
parameters
Vlag | Betekenis |
---|---|
"R" | Alleen-lezen, begint bij het begin van het bestand (standaardmodus). |
"R +" | Lezen en schrijven, begint bij het begin van het bestand. |
"W" | Alleen-schrijven, verkort bestaand bestand tot lengte nul of maakt een nieuw bestand om te schrijven. |
"W +" | Lezen-schrijven, verkort bestaand bestand tot lengte nul of maakt een nieuw bestand voor lezen en schrijven. |
"een" | Alleen-schrijven, begint aan het einde van het bestand als het bestand bestaat, maakt anders een nieuw bestand om te schrijven. |
"A +" | Lezen-schrijven, begint aan het einde van het bestand als het bestand bestaat, maakt anders een nieuw bestand voor lezen en schrijven. |
"B" | Binaire bestandsmodus. Onderdrukt EOL <-> CRLF-conversie op Windows. En stelt externe codering in op ASCII-8BIT tenzij expliciet gespecificeerd. (Deze vlag kan alleen worden weergegeven in combinatie met de bovenstaande vlaggen. File.new("test.txt", "rb") zou bijvoorbeeld test.txt in de read-only modus openen als een binary bestand.) |
"T" | Tekstbestandsmodus. (Deze vlag mag alleen in samenhang met de hierboven vlaggen. Bijvoorbeeld, File.new("test.txt", "wt") zou openen test.txt in write-only mode als een text bestand.) |
Een tekenreeks naar een bestand schrijven
Een tekenreeks kan naar een bestand worden geschreven met een instantie van de klasse File
.
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
De klasse File
biedt ook een steno voor de new
en close
bewerkingen met de open
methode.
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
Voor eenvoudige schrijfbewerkingen kan een string ook rechtstreeks naar een bestand worden geschreven met File.write
. Merk op dat dit het bestand standaard overschrijft.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
Als u een andere modus op File.write
wilt opgeven, geeft u deze als een andere parameter door aan de waarde van een sleutel met de naam mode
in een hash.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
Een bestand openen en sluiten
Open en sluit een bestand handmatig.
# 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
Sluit een bestand automatisch met een blok.
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
krijg een enkele invoer
In tegenstelling tot gets.chomp
dit niet op een nieuwe regel.
Het eerste deel van de stdlib moet worden opgenomen
require 'io/console'
Dan kan een helper-methode worden geschreven:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
Het is belangrijk om af te sluiten als control+c
wordt ingedrukt.
Lezen van 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
Lezen van argumenten met ARGV
number1 = ARGV[0]
number2 = ARGV[1]
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb 1 2