Node Streams
Que tal,
Leyendo la información de Fundamentos de I/O.
me encuentro con los Node Streams solo que algunos no los conosco y quiero ver si alguien de ustedes me puede apoyar.
Memory Array : CharArrayReader
CharArrayWriter
ByteArrayOutputStream
Memory: StringReader, StringWriter
Pipe : PipedReader
PipedWriter
PipedOutputStream
PipedInputStream
- Inicie sesión o regístrese para enviar comentarios
simples
De los que pones, la mayoría son simples: ByteArrayOutputStream, CharArrayWriter, StringWriter, son para escribir a memoria bytes, caracteres y cadenas respectivamente. Los puedes usar con cualquier método que espere recibir un OutputStream o un Writer.
Sus contrapartes son ByteArrayInputStream, StringReader, CharArrayReader, para quien espere un InputStream o un Reader (primero creas el objeto con sus datos y luego lo pasas para que los lean).
Todos esos son simplemente para escribir a memoria o leer de memoria.
Los de pipes son como para sincronizar entre hilos. El PipedReader debe ir conectado a un PipedWriter. En un hilo estás leyendo del PipedReader esperando datos; en otro hilo escribes al PipedWriter y le pasa los datos al reader y el otro hilo se desbloquea y lee dichos datos. Eso es con caracteres y/o cadenas; si quieres con bytes directo usas las versiones Stream.
Interesante, Gracias !!!!
Interesante, Gracias !!!!
duda sobre este mismo tema
En una clase tengo lo siguiente, estoy pasandole como argumentos un txt a un FileOutputStream
pero al momento de guardar los datos me los guarda con caracteres raros. pero cuando los recupero ya me muestra
los datos correctos en este caso int.
DataOutputStream ds = new DataOutputStream(fw);
int[] num = {1, 2, 3, 4, 5};
for (int i = 0; i < num.length; i++) {
ds.writeInt(num[i]);
}
ds.close();
Antes de hacer esta prueba en los argumentos del FileOutputStream estaba creando un Tipo "base.mdb".
Es decir esto:
DataOutputStream ds = new DataOutputStream(fw);
int[] num = {1, 2, 3, 4, 5};
for (int i = 0; i < num.length; i++) {
ds.writeInt(num[i]);
}
ds.close();
En otra clase tengo lo siguiente, donde recupera la informacion.
for(;;){
System.out.print("\t"+ ds.readInt());
}
}catch(Exception e){
e.getMessage();
}
Sera la forma en que almacena los datos cuando son primitivos, porque cuando creo un FileWriter
y me acepta el tipo de datos.
PrintWriter out = new PrintWriter(fw);
y habro el archivo veo los elementos que haya ingresado por ejemplo un arreglo de cadenaso un arreglo de enteros.
Espero haberme explicado.
encoding
Tu problema es por encoding de las cadenas.
Ya veo, gracias !!!!
Ya veo, gracias !!!!
http://docs.oracle.com/javase/tutorial/i18n/text/stream.html