現時点で暫定的に理解しているように:
DataInputStream
はInputStream
サブクラスであるため、バイトを読み書きします。バイトを読み取っていて、それらがすべてint
s またはその他のプリミティブ データ型になることがわかっている場合は、byte
を使用してそれらの s をプリミティブに直接読み取ることができますDataInputStream
。
- 質問:コンテンツを読み取る前に、コンテンツの型 (int、string など) を知る必要がありますか? そして、ファイル全体がその 1 つのプリミティブ型で構成される必要があるでしょうか?
私が持っている質問は:のバイトデータInputStreamReader
をラップして使用しないのはなぜですか? InputStream
このアプローチでは、引き続きバイトを読み取ってから、文字を表す整数に変換します。どの整数がどの文字を表すかは、指定された文字セット ("UTF-8" など) によって異なります。
- 質問:が機能するのに が機能しないのはどのような場合ですか?
InputStreamReader
DataInputStream
私の推測の答え:速度が本当に重要であり、それができる場合は、InputStream
のバイトデータをプリミティブ経由で直接変換するのDataInputStream
がよいでしょうか?これにより、バイトデータを最初Reader
に「キャスト」する必要がなくなります。int
また、返された整数によってどの文字が表されているかを解釈するために、文字セットを提供することに依存しません。これがDataInputStream
、基礎となるデータのマシンに依存しない読み取りを可能にするという意味だと思います。
- 単純化:
DataInputStream
バイトをプリミティブに直接変換できます。
全体に拍車をかけた質問:私は次のチュートリアルコードを読んでいました:
FileInputStream fis = openFileInput("myFileText");
BufferedReader reader = new BufferedReader( new InputStreamReader( new DataInputStream(fis)));
EditText editText = (EditText)findViewById(R.id.edit_text);
String line;
while( (line = reader.readline()) != null){
editText.append(line);
editText.append("\n");
}
new DataInputStream(fis)
...バイトからプリミティブに直接変換する機能が活用されていないように見えるため、インストラクターが使用を選択した理由がわかりませんか?
- 何か不足していますか?
あなたの洞察に感謝します。