이 InputStream에 설명서를 말한다 buf를 버퍼 배열로서 사용하도록ByteArrayInputStream이 바이트 배열을 복사하지 않습니까?
java.io.ByteArrayInputStream.ByteArrayInputStream (바이트 [] BUF) 는이 InputStream를 생성한다. 버퍼 배열은 복사되지 않습니다. pos의 초기 값은 0이고 count의 초기 값은 buf의 길이이다. 매개 변수 : buf 입력 버퍼.
나는 아래의 코드를 실행
, byte[] b = new byte[10];
ByteArrayInputStream bais = new ByteArrayInputStream(b);
String someText = "Java byte arrayinput stream test - this string will be used.";
b = someText.getBytes();
int c =0;
while((c = bais.read()) != -1){
System.out.print((char)c);
}
은 내가 얻을 출력은 10 바이트 빈 배열이 아닌 테스트하는 데 사용되는 문자열을 기반으로합니다. 이것은 전달 된 바이트 배열에 대한 참조를 저장하는 대신 ByteArrayInputStream의 생성자가 바이트 배열을 복사해야 함을 나타냅니다. 이는 문서와 모순됩니다. 바이트 배열이 복사되거나 그렇지 않으면 누구나 내 이해를 명확히 할 수 있습니까? (그리고 복사되지 않으면 출력이 바이트 배열 B의 상태를 반영하지 않는 이유는 무엇입니까?)
4 번 줄을 보면 인자에 무엇이 잘못된 것인지 알 수 있습니다. 정확하게 b = someText.getBytes()는 무엇을합니까? – Ingo
나는 그것을 깨닫는다.. 나는 모든 대답을 읽은 후 질문을하는 것이 얼마나 순진한 지에 대해서만 놀라실 수있다! – Bhaskar