Ruby Language
Operaciones de archivo y E / S
Buscar..
Parámetros
Bandera | Sentido |
---|---|
"r" | Solo lectura, comienza al principio del archivo (modo predeterminado). |
"r +" | Lectura-escritura, comienza al principio del archivo. |
"w" | Solo escritura, trunca el archivo existente a longitud cero o crea un nuevo archivo para escribir. |
"w +" | Leer-escribir, trunca el archivo existente a longitud cero o crea un nuevo archivo para leer y escribir. |
"una" | Solo escritura, comienza al final del archivo si el archivo existe, de lo contrario crea un nuevo archivo para escribir. |
"a +" | Lectura-escritura, comienza al final del archivo si el archivo existe, de lo contrario crea un nuevo archivo para leer y escribir. |
"segundo" | Modo de archivo binario. Suprime la conversión EOL <-> CRLF en Windows. Y establece la codificación externa en ASCII-8BIT a menos que se especifique explícitamente. (Este indicador solo puede aparecer junto con los indicadores anteriores. Por ejemplo, File.new("test.txt", "rb") abriría test.txt en modo de read-only como un archivo binary ). |
"t" | Modo de archivo de texto. (Este indicador solo puede aparecer junto con los indicadores anteriores. Por ejemplo, File.new("test.txt", "wt") abriría test.txt en modo de write-only como un archivo de text ). |
Escribir una cadena en un archivo
Se puede escribir una cadena en un archivo con una instancia de la clase de File
.
file = File.new('tmp.txt', 'w')
file.write("NaNaNaNa\n")
file.write('Batman!\n')
file.close
La clase File
también ofrece una forma abreviada de las operaciones new
y close
con el método open
.
File.open('tmp.txt', 'w') do |f|
f.write("NaNaNaNa\n")
f.write('Batman!\n')
end
Para operaciones de escritura simples, una cadena también se puede escribir directamente en un archivo con File.write
. Tenga en cuenta que esto sobrescribirá el archivo de forma predeterminada.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n')
Para especificar un modo diferente en File.write
, páselo como el valor de una clave llamada mode
en un hash como otro parámetro.
File.write('tmp.txt', "NaNaNaNa\n" * 4 + 'Batman!\n', { mode: 'a'})
Abrir y cerrar un archivo
Abrir y cerrar manualmente un archivo.
# 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
Cerrar automáticamente un archivo utilizando un bloque.
f = File.open("test.txt", "r") do |f|
# do something with file f
puts f.read # for example, read it
end
obtener una sola char de entrada
A diferencia de gets.chomp
esto no esperará una nueva línea.
La primera parte del stdlib debe ser incluida
require 'io/console'
Entonces se puede escribir un método auxiliar:
def get_char
input = STDIN.getch
control_c_code = "\u0003"
exit(1) if input == control_c_code
input
end
Es importante salir si se presiona control+c
.
Lectura de 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
Leyendo de argumentos con ARGV
number1 = ARGV[0]
number2 = ARGV[1]
puts number1.to_i + number2.to_i
## run with: $ ruby a_plus_b.rb 1 2