なぜ、変換されたストリームが存在すべきですか?
IDEAでは、テキストファイルFileReaderのプロジェクトを読み込みます。IDEAの設定はデフォルトのUTF-8エンコーディングされているので、それほど問題はありません。しかし、文字化けされるデフォルトのWindows GBKコーディングシステムため、Windowsシステムで作成したテキストファイルを読み込みます。一定のルールによると、文字コードと呼ばれる、コンピュータに保存されています。逆に、解決が表示一定の規則に従ってコンピュータに格納されたバイナリ数は、復号化と呼ばれます。例えば、ストレージA、Aの規則に従って同じ決意の規則に従って、あなたは、シンボルF正しいテキストを表示することができます。逆に、Aに格納されたルールに従って、ルールに従って解析され、次にBと歪み現象につながります。転流を浮上したJavaの出現で、この問題を解決するために、我々は、ゴミ問題を解決する方法をデコード/ストリームのトランスコーディングを指定することができます。
OutputStreamWriter类
転流java.io.OutputStreamWriterが作家のサブクラスである、橋は、文字から流れるバイトストリームです。指定された文字セットバイト文字エンコーディングを使用します。誰の文字セットは、名前で指定された、またはプラットフォームのデフォルトの文字セットを受け入れることができます。親クラスのメソッドの一般的なメンバーから続行します。
- 空の書き込み(int c)単一の文字を書き込み。
- 空の書き込み(文字[] CBUF)は、文字列を書き込みます。
- 部分抽象的な空の書き込みは(文字[] CBUFは、オフint型、int型のlen)書き込まれた文字数をlenの配列インデックスのオフが始まる文字配列を、書き込みます。
- 空の書き込み(String str)文字列を書き込みます。
- 空のライトの部分文字列、書き込み文字のLEN数オフインデックスから始まり、文字列を書き込みます(文字列strが、int型lenは、オフINT)。
- void flush()ストリームをフラッシュ。
- 空に近い()ストリームを閉じてフラッシュします。
コンストラクタ:
- OutputStreamWriter(OutputStreamをアウト)を作成し、デフォルトの文字エンコーディングのOutputStreamWriter。
- OutputStreamWriter(OutputStreamのうち、文字列たcharsetName)指定された文字セットのOutputStreamWriterを使用して作成しました。
コンストラクタのパラメータ:
- うちのOutputStream:ストリームバイト出力、書き込みに使用できるファイルに変換した後バイト
- 文字列たcharsetName:...、指定したテーブル名をコードする大文字と小文字を区別しない、UTF-8 / UTF-8であってもよいし、GBK / GBKは、デフォルトの使用のUTF-8に指定されていません
これらの手順を実行します。
- OutputStreamWriterは、オブジェクトのコンストラクタを作成し、バイトの出力ストリームを渡すと、テーブル名を指定コーディング
- 使用ライトのOutputStreamWriterオブジェクトは、文字は、記憶バッファのバイトに変換(エンコード)されています
- フラッシュのOutputStreamWriterオブジェクトを使用し、メモリ・バッファは、ファイルのバイトにフラッシュされる(書き込み処理のバイトを使用して、バイトストリーム)
- リソースを解放
コードは示してい
パッケージdemo02; インポートjava.io.FileOutputStreamは、 インポートにjava.io.IOException; インポートjava.io.OutputStreamWriterが、 パブリック クラスDemo01OutputStreamWriter { 公共 静的 ボイドメイン(文字列[]引数)がスローにIOException { // 1つのOutputStreamWriter作成されたオブジェクトのコンストラクタそして、テーブル名をコーディングバイトの出力ストリームを指定して送信すると、指定されていないUTF-8形式の // のOutputStreamWriter新しい新しいOSW =のOutputStreamWriter(新新のFileOutputStream(「UTFのday21 \\ファイルは.txtで」)); / * 使用の転流のOutputStreamWriter書き込みGBK形式のファイル * / のOutputStreamWriter OSW = 新新のOutputStreamWriter(新新のFileOutputStream(「\\ day21 GBKファイル.TXT」)、「GBK」); // のOutputStreamWriterオブジェクトの書き込みを使用して方法2は、バイトが文字バッファストアに変換されます(コーディング) osw.write(「ジュースマシンは「良いことです); // 3使用フラッシュののOutputStreamWriterオブジェクト、ファイルにバイトのメモリバッファをリフレッシュするために(バイトストリームバイト書き込みプロセスを使用して) osw.flush(); // リリースリソース osw.close(); } }
InputStreamReaderの类
転流java.io.InputStreamReaderは、リーダーのサブクラスである、バイト橋から流れる文字ストリームです。これは、指定された文字セットを使用してバイト文字にそれをデコード読み込みます。誰の文字セットは、名前で指定された、またはプラットフォームのデフォルトの文字セットを受け入れることができます。親クラスのメンバーから継承された一般的な方法:
- int型の読み取りは、()単一の文字とリターンをお読みください。
- INTは、文字の配列に読み取られた読取文字(CHAR [] CBUF)複数を読み取ります。
- 空に近い()ストリームを閉じ、関連するすべてのリソースを解放します。
コンストラクタ:
- InputStreamReaderの(でのInputStream)InputStreamReaderのがデフォルトの文字セットを使用して作成します。
- InputStreamReaderの(文字列たcharsetName、中のInputStream)指定された文字セットにInputStreamReaderを使用して作成しました。
コンストラクタのパラメータ:
- バイトに格納されたファイルを読み込むためのバイトの入力ストリーム:でのInputStream
- 文字列たcharsetName:...、指定したテーブル名をコードする大文字と小文字を区別しない、UTF-8 / UTF-8であってもよいし、GBK / GBKは、デフォルトの使用のUTF-8に指定されていません
これらの手順を実行します。
- InputStreamReaderのオブジェクトコンストラクタを作成し、バイトの入力ストリームを渡すと、テーブル名を指定コーディング
- InputStreamReaderのオブジェクトは、ファイルを読むための方法を読みます
- リソースを解放
注意事項:
- 符号表符号化されたファイル名で指定された工法は、そうでなければ、それが文字化け発生する、同じになるように
コードは示してい
パッケージdemo02; インポートjava.io.FileInputStream; インポートにjava.io.IOException; インポートjava.io.InputStreamReader、 パブリック クラスDemo01InputStreamReader { 公共 静的 ボイドメイン(文字列[]引数)がスローにIOException { // 作成InputStreamReaderのオブジェクトコンストラクタバイトの入力ストリームを送信すると、テーブル名、UTF-8が指定されていないデフォルトのコーディング指定 // InputStreamReaderのISR =新しい新しいInputStreamReaderの(新しい新しいのFileInputStream(「UTFのday21 \\ファイルは.txtで」)); / * InputStreamReaderのは、形式GBKを読みますファイル * / InputStreamReaderのISR = 新しい新しい InputStreamReaderの(新新FileInputStreamを( "day21 \\ GBKファイルの.txt")、 "GBK" ); // 使用にInputStreamReaderオブジェクトファイルを読み取る読み取り INT LEN = 0 ; CHAR [] B = 新しい新しい CHAR [1024 ]; 一方、((LEN isr.read =(B))= -1!){ System.out.printlnは(新しい新しい文字列(B、0 、LEN)); } // 3.リリースリソース isr.close(); } }
演習:変換ファイルのエンコーディング
GBKは、UTF-8エンコードされたテキストファイルに変換され、テキストファイルをエンコード。
インポート java.io. * ; / * 分析: 1. InputStreamReaderのオブジェクトのコンストラクタを作成し、バイトの入力ストリームを通過コーディングテーブル名GBKは、指定された オブジェクトのコンストラクタを作成するOutputStreamWriter 2及びバイトの出力ストリームを渡すとコード指定テーブル名。8-UTF オブジェクトにInputStreamReader 3.使用がファイル読み取りに読ん 4.書き込みのOutputStreamWriterオブジェクトの使用を、読み出したデータがファイルに書き込まれ 、リリースリソース5. * / パブリック クラスDemo04Test { パブリック 静的の 無効メイン(文字列[]引数)がスローにIOException { // 1. InputStreamReaderのオブジェクトのコンストラクタを作成し、バイトの入力ストリームを通過コーディングテーブル名GBK指定 = InputStreamReaderのISRを新しい新しい InputStreamReaderの(新しい新規のFileInputStream(「I GBKテキスト形式。 TXT ")、" GBK "); // 。2.オブジェクトコンストラクタをするOutputStreamWriter作成し、バイトの出力ストリームを渡すと、テーブル名をコーディング指定した8 UTF のOutputStreamWriter OSW = 新新のOutputStreamWriter(新新のFileOutputStream(「IのUTF_8ファイルフォーマット.TXT」)、「UTF -8 " ); // ファイルを読み取る3. InputStreamReaderのオブジェクトを読み取る INT LEN = 0 ; しばらく((LEN = isr.read())= - 1!){ // 4.オブジェクトのOutputStreamWriter書き込み方法は、ファイルに書き込まれたデータを読み出す (LEN)osw.write; } // 5リリースリソースが osw.close(); )(isr.close; } }