고정 된 크기로 생성 된 스트림이 있습니다. 버퍼가 비어 있습니다. 이 버퍼의 크기를 가져올 수 있기를 원합니다. 이 일을하는 효율적인 방법은 무엇입니까?빈 "unwritten"스트림의 크기를 얻는 방법은 무엇입니까?
다음은 내가 한 것입니다.
static OutputStream CreateBuffer()
{
return (OutputStream) new ByteArrayOutputStream(100);
}
static int GetBufferSize(OutputStream out)
{
return ((ByteArrayOutputStream) out).size();
}
public static void main(String[] args)
{
System.out.println(GetBufferSize(CreateBuffer()));
}
예상치는 100
입니다. 나는 그것이 0 인 이유를 안다. - 스트림은 할당되었지만 실제로는 아무것도 아직 쓰여지지 않았다. 실제로 데이터를 복사하지 않고 빈 출력 스트림의 크기를 얻으려면 좋은 구현은 무엇입니까?
당신이 100을 나가기를 원한다면 나는 당신이 요구하는 것이 불가능하다는 것을 확신합니다. 바닐라 ByteArrayOutputStream에 있지 않습니다. 악의적 인 반사 허커리지가 아닙니다. API는 특별히이 질문에 답하지 않도록 설계되었습니다. –
질문에 답을 쓰지 마십시오. – shmosel
그것은 실수였습니다.적절한 버전으로 업데이트하고 잘못된 버전을 추가했습니다. 수정 됨. 고맙습니다. – nikk