File 인스턴스를 만들지 않고 InputStream의 크기를 바이트 단위로 가져와야합니다. Java NIO를 사용하여이를 수행 할 수있는 방법이 있습니까?Java InputStream 크기
답변
일반적으로 InputStream
? 스트림이 끝날 때까지 읽은 바이트 수를 계산하여 읽고 계속 읽어야합니다 (예 : 같은 버퍼로, 반복해서).
물론 데이터 자체를 읽을 수는 없습니다. 원한다면 데이터를 읽은 상태로 유지해야합니다. ByteArrayOutputStream
으로 복사하면됩니다.
(길이를 계산하는 것과 동시에 데이터를 처리 할 수 있다면 루프를 사용하여 읽을 때마다 동일한 버퍼로 읽을 때마다 카운터를 증가시켜 기록하면됩니다. . 당신이 읽은 얼마나 당신은 정말 우리에게 당신이 스트림에 수행 할 작업에 대한 정보를 제공하지 않은 경우)
추가 옵션의 몇 :.
을의 차단 특성에 따라 입력 스트림 인 경우 스트림에서 available()으로 전화 할 수 있습니다.
스트림이 작다면 PushbackInputStream에 스트림을 기록하고 바이트를 계산 한 다음 되감기 할 수 있습니다.
-1. available()은 스트림의 크기를 리턴하지 않고 * Javadoc에 그렇게 말하는 특정 경고가있다. 그리고 * 모든 입력 스트림이 차단되고 있습니다. – EJP
모순됩니다. JavaDoc을 확인하십시오. http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html#available%28%29. available()의 반환 값은 ** 블로킹없이 읽을 수있는 바이트 수 **임을 지정합니다. 또한 "경우에 따라 느린 네트워크에서 대용량 파일을 읽는 경우와 같이 단순히 차단할 때 비 차단 읽기 (또는 건너 뛰기)가 차단 된 것처럼 보일 수 있습니다. FileInputStreams의 경우에는 크기에 대한 신뢰할 수있는 지표가되는 경우가 많습니다. – Nicholas
그건 정확히 내가 말한거야. 그것은 당신이 말한 것과 정반대입니다.available()을 사용하여이 질문의 주제 인 입력 스트림의 크기를 반환 할 수 있다고하셨습니다. 차단하지 않고 읽을 수있는 바이트 수와 같은 것은 아닙니다. 소켓을 고려하십시오. 'furthermore'이후의 부분에는 관련성이 없습니다. 마지막 문장에서 사용법에 대해 특별히 경고하는 인용 부호가없는 또 다른 문장이 있으며 FileInputStream에 대한 질문에는 아무 것도 없습니다. – EJP
원칙적으로 알지 못합니다 (작성을 중단하지 않는 동료를 생각해보십시오). 필요하지 않습니다. 고정 크기 버퍼를 사용하여 루프를 읽고 쓰십시오. NIO는 어떤 마법의 해결책도 제시하지 않습니다.
당신은 Utils.java의의 InputStream 사용 getBytes (inputStream을)의 크기가
즉, 스트림의 끝까지 스트림을 읽거나, ByteArrayInputStream의 문서화되지 않은 속성에 의존하십시오. 품질이 매우 좋지 않은 링크이며 질문에 지정된 NIO를 사용하지 않습니다. -1 – EJP
- 1. Inputstream java
- 2. Java : OutputStream 및 InputStream
- 3. java process and inputstream
- 4. Java InputStream! = Readable
- 5. Java : inputstream/outputstream의 기본값은 무엇입니까?
- 6. Java InputStream 요소에 대해 EOF를 보내려면 어떻게해야합니까?
- 7. C에서 Java InputStream 사용 JNI 라이브러리
- 8. Java InputStream 뒤에있는 파일의 바이트 수를 얻으십시오
- 9. Java TelnetClient InputStream open after open
- 10. 자바 프로세스 InputStream 버그?
- 11. Android InputStream
- 12. InputStream 선언
- 13. Java의 InputStream
- 14. InputStream 처리
- 15. 폐쇄에는 InputStream
- 16. Java HTTP 요청 버퍼 크기
- 17. 소켓에서 InputStream 가져 오기
- 18. InputStream 버퍼 데이터
- 19. Byte [] to InputStream 또는 OutputStream
- 20. Java 크기 조정 픽셀?
- 21. Java Component 최대 크기
- 22. Java 최대 파일 크기
- 23. JPanel의 Java 설정 크기
- 24. 크기 Of Java
- 25. JMP의 Java 힙 크기
- 26. Java JSplitPane으로 크기 조절
- 27. Java 프로세스가 gpg.exe의 InputStream, OutputStream을 캡처 할 수 없습니다.
- 28. Java 소켓 InputStream read()는 항상 -1을 반환합니다.
- 29. EOS에 도달 한 후 Java 소켓의 InputStream 재설정
- 30. FileWriter 및 Java의 InputStream
왜 당신이 필요이 다음 링크를 확인받을 수 있나요? – Jeffrey
'InputStream '의 계약은 그것이 유한하다는 것을 명령함에 관해서 아무 것도 말하지 않는다. – oldrinb
또는 사전에 정의되어 있습니다. – EJP