1

私は読んだFileInputStreamところ、ファイルのバイトデータを読み取る読み取りメソッドがあることがわかりました。

私が知りたいのは、それが読み取るバイトデータの種類は何ですか? ASCII、Unicode、またはその他のタイプを使用することを意味しますか?

4

4 に答える 4

2

ドキュメントから

FileInputStreamは、画像データなどの生のバイトのストリームを読み取るためのものです。文字のストリームを読み取るには、FileReaderの使用を検討してください。

ASCII、Unicode、...は、バイトではなく文字の場合に適用されます。それらは単なるバイト(8ビット)です。

public InputStreamReader(InputStream in, Charset cs)文字セットを指定する場所で使用できます。

于 2012-10-12T05:02:50.973 に答える
1

FileInputStreamバイナリ I/O クラスです。Unicode からファイル固有のエンコーディングへ、またはその逆への変換が必要なテキスト I/O ですが、バイナリ I/O は変換を必要としません。ファイルからバイトを読み取ると、元のバイトが返されます。

于 2012-10-12T05:05:08.013 に答える
1

私が知りたいのは、それが読み取るバイトデータの種類は何ですか? ASCII、Unicode、またはその他のタイプを使用することを意味しますか?

およびそのメソッドに関する限りFileInputStream、データの「タイプ」は 1 つだけです。そして、そのタイプは「一連のバイト(またはオクテット)」です。

その他の「タイプ」は、別のライブラリ (またはアプリケーション コード) レイヤーが処理するためのものです。

ASCIIおよびUnicodeと呼ばれる「タイプ」は、文字エンコーディングです(大まかに言えば)。(実際、Unicode はまったくエンコーディングではありません...そして、このコンテキストでは正確には意味がありません。Unicode のエンコーディングには、「UTF-8」や「UTF-16」などの名前があります。http:/を参照してください。 /en.wikipedia.org/wiki/Comparison_of_Unicode_encodings .)

いずれにせよ、テキスト ファイル タイプ (つまり、標準的な文字エンコーディング スキームでの文字列) を "処理" する標準的な方法は、Readerクラスを使用することです。InputStreamReaderから文字データを読み取るために特別に設計されたと呼ばれるラッパー クラスがありInputStreamます。

その他の非テキスト「タイプ」のデータは、 、 、 、イメージ リーダー クラスなどのクラスによって処理さZipInputStreamInflaterInputStreamますGZIPInputStream

于 2012-10-12T06:13:04.603 に答える
0

ファイルのエンコーディングは変更されません。目的のエンコーディングで byte[] をデコードする場合は、charset以下のように目的の文字セットに変換するために使用できます。

   Charset cs = Charset.forName("UTF-8"); // breaks too
   String convertedString= new String(byteArray, cs);       
于 2012-10-12T04:58:31.413 に答える