2010-01-19 24 views
10

¿Es posible convertir una cadena en un archivo sin escribirlo en el disco?Ruby Convert String to File

me gustaría trabajar de forma ubicua, ya sea con una cadena de un archivo:

input = "123" 
if (ARGV.length == 1) 
    input = File.open(ARGV[0]) 

    #do stuff with input 
end 

¿Puedo crear un archivo de una cadena (sin escribir en el disco)? De lo contrario, no podría hacer input.readline() cuando es una cadena.

+0

agregue la palabra clave final al final de su ejemplo;) – Alexey

Respuesta

28

Puede utilizar StringIO (1.8.7, 1.9.3) para crear un (1.8.7, 1.9.3) objeto IO (es decir, un objeto que actúa como un archivo) de una cadena:

file = StringIO.new("123") 
line = file.readline 
file.close 
5

StringIO se puede utilizar para dar una interfaz tipo archivo a las cadenas.

2

El StringIO es agradable, también se puede hacer esto utilizando un bloque:

StringIO.open(string) do |file| 
    # do stuff here 
end 

me gusta este alt sobre file.close