- ベストアンサー
テキストファイルからの読み込みについて
度々の登場です。 外部テキストファイル内に ErrorMessage.txt ○○のエラーが発生しました △△のエラーが発生しました ■■のエラーが発生しました ・ ・ ・ ☆☆のエラーが発生しました --------------------------- と、そのプログラム内で発生する可能性のあるエラーメッセージを格納しておきます。 プログラム内で■■のエラーが発生したとします。 class Test{ public static void main(String[] args){ ・ ・ try{ ○○ }catch{ } try{ △△ }catch{ } try{ ■■ }catch{ } ・ ・ ・ try{ ☆☆ }catch{ } } } このとき 発生したエラーメッセージの内容をErrorMessage.txtから取得するにはどうしたらよいのですか? どうか、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Propertiesクラスを利用してはいかがでしょうか。 Propertiesクラスを利用するには、まず、ErrorMessage.txtの内容を、 ------------------------ A=○○のエラーが発生しました B=△△のエラーが発生しました C=■■のエラーが発生しました ・ ・ ・ D=☆☆のエラーが発生しました ------------------------ という、<コード>=<メッセージ>の形式にする必要があります。 使い方としては、処理の最初に Properties props = new Properties(); props.load("/properties/ErrorMessage.txt"); のように初期化しておいてあげれば、あとは props.getProperty("A"); で"A"に該当するメッセージ(「○○のエラーが発生しました」という文字列)を取り出せます。 ※ErrorMessage.txtが入っているディレクトリは、適切なものに書き換えてください。 これを使って、それぞれのエラーをcatchした後に、該当のメッセージを取得する処理を埋め込んであげればよいでしょう。 try{ ○○ }catch{ String errMsg = props.getProperty("A"); // errMsgを出力? : } try{ ■■ }catch{ String errMsg = props.getProperty("B"); // errMsgを出力? : } : といった具合です。 ただし、ErrorMessage.txtに日本語が含まれる場合には、native2asciiというコマンドで事前に変換してあげないと、日本語が正しく表示できないでしょう。 実際の開発では、これが意外と面倒なので、独自にプロパティを読み込むクラスを作ってしまったりもします。
その他の回答 (1)
- chi-kon
- ベストアンサー率43% (58/132)
load(InputStream in)なので FileInputStream fis = new FileInputStream("プロパティファイルのパス"); load(fis) としてやれば、コンパイルはとおります。 適当にtry-catchをする必要があります。 ResourceBundleを使えば、もう少し記述が短くなります。 Propertiesと似たような使い方ができます。
お礼
有難う御座いました。 大変参考になりました。
補足
アドバイス有難う御座います。 さて、早速アドバイス頂きました内容でぷrpグラムを組んでみた所下記のようにエラーメッセージが出てしましました。 ==========エラー内容========= java.util.Propertiesのlosd(java.io.InputStream)は(java.long.String)に適応できません。 props.load("c:/ErrorMassage.txt"); ^ エラー1個 ==========エラー内容========= ErrorMassage.txtはCドライブ直下に置いてあります。 申し訳ありませんが、再度アドバイス願います。