style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

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.

Imagen de CesarAlducin

Interesante, Gracias !!!!

Interesante, Gracias !!!!

Imagen de CesarAlducin

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.

FileOutputStream fw = new FileOutputStream("archivo2.txt", false);
        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:

FileOutputStream fw = new FileOutputStream("datos.mdb", false);
        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.

try{
            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.

  FileWriter fw = new FileWriter("nuevo.txt");
        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.

Imagen de ezamudio

encoding

Tu problema es por encoding de las cadenas.

Imagen de CesarAlducin

Ya veo, gracias !!!!

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">