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