Ruby Language
Operazioni su file e I / O
Ricerca…
Parametri
Bandiera | Senso |
---|---|
"R" | Sola lettura, inizia all'inizio del file (modalità predefinita). |
"R +" | Lettura-scrittura, inizia all'inizio del file. |
"W" | Solo scrittura, tronca il file esistente a lunghezza zero o crea un nuovo file per la scrittura. |
"W +" | Lettura-scrittura, tronca il file esistente a lunghezza zero o crea un nuovo file per la lettura e la scrittura. |
"un" | Solo scrittura, inizia alla fine del file se il file esiste, altrimenti crea un nuovo file per la scrittura. |
"A +" | Read-write, inizia alla fine del file se il file esiste, altrimenti crea un nuovo file per la lettura e la scrittura. |
"B" | Modalità file binario. Elimina la conversione EOL <-> CRLF su Windows. E imposta la codifica esterna su ASCII-8BIT se non specificato esplicitamente. (Questo flag può apparire solo in combinazione con i flag precedenti. Ad esempio, File.new("test.txt", "rb") aprirà test.txt in modalità di read-only lettura come file binary .) |
"T" | Modalità file di testo. (Questo flag può apparire solo in combinazione con i flag precedenti. Ad esempio, File.new("test.txt", "wt") aprirà test.txt in modalità di write-only come file di text .) |
Scrivere una stringa in un file
Una stringa può essere scritta in un file con un'istanza della classe File
.
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
La classe File
offre anche una scorciatoia per le operazioni new
e close
con il metodo open
.
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
Per semplici operazioni di scrittura, una stringa può anche essere scritta direttamente in un file con File.write
. Si noti che questo sovrascriverà il file per impostazione predefinita.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
Per specificare una modalità diversa su File.write
, File.write
come valore di una chiave chiamata mode
in un hash come un altro parametro.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
Apri e chiude un file
Aprire e chiudere manualmente un file.
# 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
Chiudi automaticamente un file usando un blocco.
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
ottieni un singolo carattere di input
A differenza di gets.chomp
questo non aspetterà una nuova riga.
La prima parte dello stdlib deve essere inclusa
require 'io/console'
Quindi è possibile scrivere un metodo di supporto:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
E 'imporante di uscire se viene premuto il control+c
.
Leggendo da 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
Lettura dagli argomenti con ARGV
number1 = ARGV[0]
number2 = ARGV[1]
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb 1 2