Question

J'essaie de lire (ajouter les données entrantes dans une chaîne locale) à partir d'un PrintStram dans le bloc de code suivant:

    System.out.println("Starting Login Test Cases...");

    out = new PrintStream(new ByteArrayOutputStream());
            command_feeder = new PipedWriter();
            PipedReader in = new PipedReader(command_feeder);

    main_controller = new Controller(in, out);

    for(int i = 0; i < cases.length; i++)
    {
                command_feeder.write(cases[i]);
    }

main_controller écrira quelques chaînes dans sa sortie (PrintStream), comment puis-je lire à partir de ce PrintStream en supposant que je ne peux modifier aucun code dans la classe Controller? Merci d'avance.

Était-ce utile?

La solution

Simplement dit: vous ne pouvez pas. Un PrintStream est destiné à la sortie . Pour lire des données, vous avez besoin d’un InputStream (ou d’une sous-classe).

Vous avez déjà un ByteArrayOutputStream. Le plus facile à faire est:

// ...

ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);

// ...

ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());

// use in to read the data

Autres conseils

Si vous conservez une référence au flux de sortie du tableau d'octets sous-jacent, vous pouvez appeler toString (codage de chaîne) ou toByteArray () .

Je soupçonne que vous voulez l'ancien, et vous devez spécifier le codage correspondant à la façon dont les chaînes ont été écrites (vous pourrez peut-être utiliser la variante de codage par défaut)

Etant donné que vous ne pouvez pas modifier le contrôleur, démarrez un processus pour le contrôleur et lisez-le à partir de la sortie du processus.

Exemple .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top