سؤال

وأنا أحاول أن أقرأ (إلحاق البيانات الواردة في سلسلة المحلية) من PrintStram في كتلة التعليمات البرمجية التالية:

    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 سيتم كتابة بعض الجمل لللخروج (PrintStream)، ثم كيف يمكنني قراءة من هذا PrintStream افتراض لا يمكنني تغيير أي رمز في الصف المراقب المالي؟ يرجع الفضل في ذلك مسبقا.

هل كانت مفيدة؟

المحلول

وببساطة المتحدث بها: لا يمكنك. A PrintStream هو إخراج ، لقراءة البيانات، تحتاج إلى InputStream (أو أي فئة فرعية).

لديك بالفعل ByteArrayOutputStream. أسهل القيام به هو:

// ...

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

// ...

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

// use in to read the data

نصائح أخرى

إذا واصلتم إشارة إلى دفق إخراج بايت مجموعة الأساسي، يمكنك الاتصال <لأ href = "http://java.sun.com/j2se/1.4.2/docs/api/java/io/ByteArrayOutputStream. أتش تي أم أل # toString٪ 28java.lang.String٪ 29 "يختلط =" نوفولو noreferrer "> toString (ترميز سلسلة) على ذلك، أو <وأ href =" http://java.sun.com/j2se/1.4 0.2 / مستندات / المعهد / جافا / IO / ByteArrayOutputStream.html # toByteArray٪ 28٪ 29 "يختلط =" نوفولو noreferrer "> toByteArray () .

وأظن تريد السابق، وتحتاج إلى تحديد الترميز بما يتوافق مع طريقة كانت مكتوبة السلاسل في (كنت قد تكون قادرة على الابتعاد مع استخدام الترميز الافتراضي البديل)

ومنذ لا يمكنك تغيير وحدة تحكم، وبدء عملية لوحدة التحكم وقراءتها من الناتج للعملية.

<وأ href = "http://mcoder.wordpress.com/2008/02/04/launch-a-process-from-java-and-wait-for-it-to-complete/" يختلط = " نوفولو noreferrer "> مثال .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top