1文字読み込み文字コードを表示する


■プログラム説明(ソースコード説明)
 ファイルから1文字ずつ読み込み文字コードで処理する場合には、まずファイルを読み込みモードで開きます。ファイルのあるパス(場所)を指定しnew File()で開きたいファイルのパスを指定します。これでファイルを操作するファイルオブジェクトが作成されます。このファイルオブジェクトに対してopen("r")を使ってファイルを開きます。サンプルでは"r"を指定していますが、これは読み込みモードで開くことを示しています。戻り値がtrueの場合はファイルが存在し読み込みが可能である事を示しています。readch()とするとファイルから1文字分読み込ます。MacOS Xの場合、改行コードを読み込むとLF (10番のコード)になります。CR (13番のコード)ではない点に注意が必要です。文字コードを取得するにはescape()かcharCodeAt()を使います。escape()では戻り値は%u30B5のようになります。これに対しcharCodeAt()の場合は10進、12469のようになります。charCodeAt()は文字の位置を指定することができるので1行読み込んでからcharCodeAt()で処理する方が効率的です。


■ソースコード
filename = "MacHD:ae_text:sample.txt";
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
text = fileObj.readch();
alert(escape(text));
fileObj.close();
}else{
alert("ファイルが開けませんでした");
}

■ポイント
 escape()でなくcharCodeAt()を使った場合には以下のようになります。

filename = "MacHD:ae_text:sample.txt";
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
text = fileObj.readch();
alert(text.charCodeAt(0));
fileObj.close();
}else{
alert("ファイルが開けませんでした");
}

 読み込みファイルの文字コードは自動判別されます。最初の数文字を読み込んで判別しているため、場合によっては日本語が文字化けしてしまう可能性があります。
 open()で読み込んでいる場合にエラーが発生する可能性もあります。例えばネットワーク経由でファイルを読み込んでいる間にネットワークが切断されてしまう、読み込み途中でファイルが削除されてしまう、ファイルが壊れているような場合です。このような場合には例外処理のtry〜catchを使ってエラーを回避するようにしてください。


サンプルをダウンロード
目次へ戻る