2011-11-25 13 views
7

Me gustaría saber si java/scala tiene el "objeto de cadena que podría actuar como archivo" como StringIO en python? Me imagino que sería mejor que escribir y leer una gran cantidad de archivos temporales. Yo prefiero Scala, pero Java también debería estar bien.¿Scala/java tiene algo así como StringIO de python?

Respuesta

3

Depende de cómo se utiliza esto. Usted ve, mientras que hace cosas con un archivo en Python, no hace nada con un File en Java! Bueno, aparte de tareas como la comprobación de autorización, la creación, etc.

Todas las E/S en Java y Scala se basa en uno de los dos conceptos:

  • InputStream y OutputStream
  • Reader y Writer

lo que se hace es crear una de estas clases que pasan por un File como parámetro. Por lo tanto, si la API que está utilizando tiene la intención de recibir un File, no puede hacer nada al respecto. Sin embargo, las API generalmente tomarán una de las clases anteriores, no una File, y todas ellas tienen una versión de cadena disponible.

En cuanto a Scala, también hay scala.io.Stream, para lo cual también puede crear uno basado en String.

+0

Mi intención es que, dado que los datos se generan en java/scala, simplemente no quiero escribirlos en mi disco antes de pasarlos a otra función que requiera un archivo (del cual, no tengo una fuente de). Pero lo tendré en cuenta al escribir mi propio código. Gracias por una explicación clara. –

1

Java tiene el ByteArrayOutputStream.

OutputStream out = new ByteArrayOutputStream(); 
out.write(...); 
String result = new String(out.toByteArray()); 
11

Creo que StringWriter es lo que estás buscando.

+0

No estoy seguro si eso es lo que estoy buscando. Quiero saber si hay una clase que podría manipular como cadena pero también podría usar como argumento para la función que quiere File como parámetro. –

+0

@Tg: No, en ese caso no hay nada que puedas hacer, porque File es básicamente un contenedor alrededor de una ruta, no tiene ningún método para acceder al contenido. –

+0

Ok, entonces. Me gustaría utilizar StringIO ya que lo usé mucho en Python. Supongo que tengo que escribirlo primero. –

Cuestiones relacionadas