Java_FileReader - アールメカブ

アールメカブ


Java_FileReader

_ FileReader? と文字コード

出典不明

FileReader?FileWriter?BufferedReader?BufferedWriter?)クラス用いた場合、 テキストファイルの文字コードはシステムデフォルトの文字コードが使用されている と自動的に判定されてしまいます。

つまり、Windows環境であれば、自動的にShift_JISと見なされてしまうわけです。 ですが実際には異なる文字コードのファイルを読み込みたい、 書き込みたいというケースもあるでしょう。

 その場合には、FileReader?クラスの代わりに FileInputStream?InputStreamReader?クラスを、 FileWriter?クラスの代わりにFileOutputStream?OutputStreamWriter?クラスを、 それぞれ用いる必要があります。

■解説

FileInputStream?InputStreamReader?クラス、 またはFileOutputStream?OutputStreamWriter?クラスを使用した場合にも、 異なるのはファイルを開く個所の記述だけです。 いずれの場合もバッファリング機能を持つBufferedReader?BufferedWriter?クラスを 介すので、実際の読み込み(書き込み)処理の部分はなんら変わりありません。

読み込み処理(EUCの例)

InputStreamReader objIsr=new InputStreamReader(
 new  
FileInputStream(application.getRealPath("access.log")),"EUC-JP");
BufferedReader objBr=new BufferedReader(objIsr,10);

書き込み処理(EUCの例)

 OutputStreamWriter? objOsr=new OutputStreamWriter?(

 new
FileOutputStream(application.getRealPath("access.log")),"EUC-JP");
BufferedWriter objBw=new BufferedWriter(objOsr,10);

InputStreamReader?OutputStreamWriter?クラスは、 いずれもバイトデータとしてファイルを読み込むためのクラスです。 つまり、いったんバイトデータとして取得したデータを、 InputStreamReader?OutputStreamWriter?クラスで 文字列に再構成しているというわけです。 上の例を見てもお分かりのように、InputStreamReader?OutputStreamWriter?クラスでは 文字データを構成する際に使用する文字エンコーディングを指定することができるので さまざまな文字コードに対応できるというわけです。

 
Link: Programming(4982d) Java_iso8859(6043d)
Last-modified: 2007-10-07 (日) 14:42:12 (6043d)