문제

다음 코드 블록의 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는 out(PrintStream)에 일부 문자열을 쓸 것입니다. 그러면 Controller 클래스의 코드를 변경할 수 없다고 가정하고 이 PrintStream에서 어떻게 읽을 수 있습니까?미리 감사드립니다.

도움이 되었습니까?

해결책

단순히 말 : 당신은 할 수 없습니다. Printstream을위한 것입니다 출력, 데이터를 읽으려면 입력 스트림 (또는 하위 클래스)이 필요합니다.

이미 BytearRayoutputStream이 있습니다. 가장 쉬운 것은 다음과 같습니다.

// ...

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

// ...

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

// use in to read the data

다른 팁

기본 바이트 배열 출력 스트림에 대한 참조를 유지하면 Tostring (String Encoding) 그것에, 또는 TobyTearRay ().

나는 당신이 전자를 원한다고 생각하고 문자열이 작성된 방식에 맞게 인코딩을 지정해야합니다 (기본 인코딩 변형을 사용하여 도망 갈 수 있습니다).

컨트롤러를 변경할 수 없으므로 컨트롤러에 대한 프로세스를 시작하고 프로세스의 출력을 읽습니다.

.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top