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()の戻り値は、**ブロッキングなしで読み取ることができるバイト数**であることを指定します。さらに、「低速ネットワーク上で大容量のファイルを読み取る場合など、一部のケースでは、非ブロック読み取り(またはスキップ)が単に遅い場合にブロックされているように見える場合があります。また、FileInputStreamの場合は、しばしばサイズの信頼できる指標になります。 – Nicholas
それはまさに私が言ったことです。あなたが言ったのとまったく逆の*です。available()を使用して入力ストリームのサイズを返すことができますが、これはこの質問のトピックです。これは、ブロックせずに読み取ることができるバイト数と同じではありません。ソケットを考えてみましょう。 「さらに」の後の部分には、明らかな関連性はありません。あなたの最後の文での使用に対して特に警告する別の文がありますが、FileInputStreamについては何の質問もありません。 – EJP
原則として知ることはできません(書き込みを停止しないピアを考えてください)、あなたはそれを必要としません。固定サイズのバッファを使ってループを読み書きするだけです。 NIOは魔法の解決法を提供しません。
あなたはUtils.javaのGetBytesメソッド(InputStreamを)使用してInputStreamのサイズを取得することができますが、これが必要になりますなぜ、この次のリンク
つまり、ストリームの終わりまでストリームを読み込むか、または文書化されていないByteArrayInputStreamのプロパティに依存します。非常に品質の低いリンクです。質問に指定されたNIOは使用しません。 -1 – EJP
- 1. Inputstream java
- 2. JavaのInputStream
- 3. Java Process InputStreamのバグ?
- 4. Java SQL Result to InputStream
- 5. のJava:のInputStreamマーク限度
- 6. inputstream javaのmarkSupported機能の使い方
- 7. InputStreamをJavaのFileItemに変換する
- 8. Oracle Database BLOBからJavaのInputStreamへ?
- 9. Java InputStreamはデータを待機します。
- 10. Java I/O - 再利用InputStreamオブジェクト
- 11. 警告のInputStream
- 12. javaの `InputStream`と` DataInputStream`と `BufferedInputStream`の違いは?
- 13. JavaプロセスからのInputStreamの読み込み
- 14. JavaのInputstreamの終了を取得するには
- 15. バイト配列をJavaのInputStreamに変換できますか?
- 16. JavaシリアルInputStreamをどのようにフラッシュしますか?
- 17. ファイルディレクトリをJavaでInputStreamのリストに変換する方法8
- 18. java GridLayoutコンポーネントのサイズ
- 19. Android OkHttp InputStream java.ioException.closed
- 20. ComポートInputStream
- 21. CSVReaderとInputStream
- 22. Bluetooth Inputstream Android 2.2
- 23. Java StringBuilderがInputStream全体を追加しない
- 24. JavaでInputStreamを閉じる必要はありますか?
- 25. Java URL/HttpURLConnection投稿中にInputStreamを回避する方法は?
- 26. Java、Telnet、InputStreamで文字列をチェックする
- 27. Java Bukkitは、InputStreamから.jarファイルをロードします。
- 28. InputStreamが動作していないJavaスキャナ
- 29. ServerSocket javaはinputStreamを読み込みませんか?
- 30. Javaのリモートファイルのアンドロイドのサイズ
をチェック! – Jeffrey
'InputStream'の契約は、それが有限であることを強制することに関して何も言いません。 – oldrinb
またはそれが事前に定義されていることに関して。 – EJP