テキストファイルからの読み込みについて

このQ&Aのポイント
  • Testクラス内でのエラー処理について、外部ファイルに格納されたエラーメッセージを取得する方法を教えてください。
  • TestクラスとErrorクラスを使って、エラーメッセージを外部ファイルに格納する方法を教えてください。
  • Testクラスで発生したエラーの内容をErrorクラスとError.txtから取得する方法を教えてください。
回答を見る
  • ベストアンサー

テキストファイルからの読み込みについて

またまた困っております。 下記の様な場合はどうなるのでしょうか? class Test{ public Static void main(String[] args){   ・  ・ try{ 処理内容A    処理内容B 処理内容C    処理内容D  }catch{ メソッドの呼び出し }   ・   ・   ・ } ------------------------ class Error{ 処理内容Aのcatch定義    処理内容Bのcatch定義 処理内容Cのcatch定義    処理内容Dのcatch定義 } -------------------------- Error.txt 処理内容Aのエラーメッセージ 処理内容Bのエラーメッセージ 処理内容Cのエラーメッセージ 処理内容Dのエラーメッセージ ------------------------------ のように、Testクラス内の処理を別のクラスで行い(Testクラスではその処理のメソッドを呼び出す)、例外内容に付いてもErrorクラスで定義し、エラーの表示内容をError.txtの様な外部ファイルに格納しておいた時に、 Testクラス内で「処理内容B」でエラーが発生した場合、Errorクラスで対応したエラー(処理内容Bのcatch定義)処理を行うのですが、Error.txtから「処理内容Bのエラーメッセージ」を拾い出してくるにはどうしたらよいのですか? 長くなり分かり難いかもしれませんが、宜しくお願い致します。

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.1

意味がわからないのですが、 もう少し説明して頂けますでしょうか? >Testクラス内の処理を別のクラスで行い なぜTestクラス内の処理を他のクラスで行うのですか? Testクラスのtry節でインデントされていますが、 どのような意味でしょうか? Errorクラスでcatchの定義とありますが、 これはどのようなことをさしているのでしょうか?

mailman
質問者

補足

class Test{ public Static void main(String[] args){ try{ 処理内容A }catch{ メソッドの呼び出し } try{ 処理内容B }catch{ メソッドの呼び出し } try{ 処理内容C }catch{ メソッドの呼び出し } try{ 処理内容D }catch{ メソッドの呼び出し } -------------------------- class Error{ Error.txtの内容を読込む } -------------------------- Error.txt 処理内容Aのエラーメッセージ 処理内容Bのエラーメッセージ 処理内容Cのエラーメッセージ 処理内容Dのエラーメッセージ ------------------------------ 追加質問 Error.txtの内容をErrorクラスで保持しておくにはどうしたらよいのでしょうか? 処理方法を各定義で行うように変更しました。 --補足説明-- >なぜTestクラス内の処理を他のクラスで行うのですか? Testクラス内を出来るだけシンプルにする為です。 >Testクラスのtry節でインデントされていますが、 どのような意味でしょうか? 特に意味はありません。 >Errorクラスでcatchの定義とありますが、 これはどのようなことをさしているのでしょうか? 例外をスローしていることです

その他の回答 (1)

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.2

要約すると エラーメッセージを格納しておくファイルがあって、 エラー内容ごとにそのエラーメッセージを取ってくるにはどうしたらよいでしょうか? ということでよいですか? エラーメッセージ格納用ファイルを Errorクラスに保存する方法についてですが、 Errorクラスの初期化処理(static節もしくはコンストラクタになると思います。)でエラーファイルの読み込みをします。 java.util.ResourceBundleクラスかjava.util.Propertiesクラスを用いると簡単にできると思います。 エラーが発生したときにErrorクラスにエラーコードを渡すとそれに対応するメッセージを返すメソッドを作っておけばいけると思います。

mailman
質問者

お礼

有難う御座いました。 お手数をお掛けいたしました。

関連するQ&A

  • c++でのヘッダーファイルの循環参照

     c++言語においての質問です.  A, Bという二つのクラスを作ったとします.  宣言は.h,実装は.cppで行っています. 【A.h】 class A{ //内容 public: B ConvertB(); }; 【B.h】 class B{ //内容 public: A ConvertA(); };  上のように,クラスAではクラスBを返すメソッド. クラスBではクラスAを返すメソッドを実装したいとします.  しかし,単純に 【A.h】に #include "B.h" 【B.h】に #include "A.h" などとすると当然循環参照になってエラーになりますよね? ...とは言っても, 【A.cpp】や【B.cpp】にインクルードした所で, ヘッダ側でエラーが起きてしまいます.  そこで,私の場合は... 【A.h】の先頭に class B{ConvertAで用いるメソッド}; 【B.h】の先頭に class A{ConvertBで用いるメソッド};  というようにする事でなんとかエラーを避けています.    ...しかし,この方法ではAやBのクラスの定義を修正する場合に, 2つのファイルのヘッダを書き換えなければならなくなります. A, B, C, D...などとクラスが増えていくと, 一つのヘッダーファイルに4つも5つもクラスの定義を書かなければなりませんし, クラスのメソッドの定義を一つ変えようとしただけでも, 複数のヘッダの内容をいじらないといけません.  非常に読みにくいコードになってしまうのです.  そこで,もう少しスマートに実現する方法は無いでしょうか?  JavaやC#を使えば簡単に解決するのですが...ライブラリの関係でC++を使わなければ ならないのです.  もしくは,このような相互変換?のクラスを作る場合はみなさんはどのようにして ヘッダーファイルの循環参照を避けているのでしょうか?  例えば様々な形式の色空間のクラスなどだったら... RGBクラス YCrCbクラス HSVクラス ...など  このようなクラスを作った後で,RGBをYCrCbに変換出来るようにしたり, その逆へも変換出来るようにしたいのです.  それともこのような変換が出来るクラスを作る事は間違っているのでしょうか?    よろしくお願いします.

  • テキストファイルからの読み込みについて

    度々の登場です。 外部テキストファイル内に ErrorMessage.txt ○○のエラーが発生しました △△のエラーが発生しました ■■のエラーが発生しました ・ ・ ・ ☆☆のエラーが発生しました --------------------------- と、そのプログラム内で発生する可能性のあるエラーメッセージを格納しておきます。 プログラム内で■■のエラーが発生したとします。 class Test{ public static void main(String[] args){ ・ ・ try{ ○○ }catch{ } try{ △△ }catch{ } try{ ■■ }catch{ } ・ ・ ・ try{ ☆☆ }catch{ } } } このとき 発生したエラーメッセージの内容をErrorMessage.txtから取得するにはどうしたらよいのですか? どうか、宜しくお願い致します。

    • ベストアンサー
    • Java
  • ArrayListからの要素の取り出しについて

    質問いたします。 下記コードの目的は Textクラス内でTest.txtの読み込み・表示を行います 次にErrorクラス内では 【errorRead() 】Testクラスで発生する可能性があるエラーを記載したError.txtよりその内容を読み取りその内容をArrayListクラスのerrorListオブジェクトに格納しておきます。 【setErrorMsg】ではerrorListに格納された要素から必要なエラー表示を取り出す処理をしています。 質問は各クラスのメソッドで起こったエラーをキャッチした場合【setErrorMsg】メソッドへ対応する要素の番号を渡し、errorListよりgetメソッドを使い要素を取得しTestクラス内のcatch部分でその内容を表示させたいのですが、表示の仕方が良くわかりません。 class Test{ public static void main(String[] args){ try{ メソッドの呼び出し }catch(FileNotFoundException fnfe){ エラー内容の表示 }catch(IOException ie){ エラー内容の表示 } } class abc{ public voidTextRead() throws FileNotFoundException, IOException{ try{ 外部ファイルaaa.txtの読み込み、DOS画面への表示処理 }catch(FileNotFoundException){ error.setERROR_MESSAGE(0); }catch(IOException){ error.setERROR_MESSAGE(1); } } class Error{ public void errorRead() throws FileNotFoundException, IOException{ ArrayList errorList = new ArrayList(); try{ BufferedReader br = new BufferedReader(new FileReader("Error.txt")); while((errorStr = br.readLine()) !=null){ errorList.add(errorStr); } br.close(); }catch(FileNotFoundException fnfe){ setERROR_MESSAGE(3); }catch(IOException ie){ error.setERROR_MESSAGE(4); } public int setErrorMsg(int count){ errorList.get(count); return count; } } 宜しくお願い致します。

    • ベストアンサー
    • Java
  • PHP5で、クラスを作成しているのですが巨大になるのでファイル分割した

    PHP5で、クラスを作成しているのですが巨大になるのでファイル分割したいのですが、C++やC#のようなことは可能でしょうか? ■Aファイル class Test { プロパティ   メソッド1 (中身なしの宣言のみ)   メソッド2 (中身なしの宣言のみ) ... } ■Bファイル   メソッド1の具体的な処理    ■Cファイル   メソッド2の具体的な処理   

    • ベストアンサー
    • PHP
  • テキストファイルの読み込みについて教えて

    また教えてください test13.txtの中身を1,2,3,4,5,6として、以下をコンパイルスルと、 printf("%d\n",a[0]);のときは 1 と結果がでますが printf("%d\n",a[3]);とすると -858993460などと、わからない数字がでます、どこがおかしのか初心者なのでさっぱりわかりません。 #include <stdio.h> int main(void) { int i; int a[6]; FILE *file; file = fopen("d:\\test\\test13.txt","r"); for(i=0;i<6;i++) fscanf(file,"%d",&a[i]); fclose(file); printf("%d\n",a[3]); return 0; }

  • クラスの継承、メソッドのオーバーライド

    ↓の問題が全然わかりません。 問題:サブクラスのsiki2にax2+bx+c=0(b2-4ac>0)とコンストラクタ を定義して、スーパークラスのsiki1にax+b=0とコンストラクタを定義し、解を求めるkaiメソッドを定義する という問題です。途中のプログラムを↓に書きました。 スーパークラス class houteisiki1{ private int kai; private int a; private int b; private int x; //コンストラクタ houteisiki1(int s, int d, int e, int f){ solve=s; a=d; b=e; x=f; } //kaiメソッド kai=(a*x)+b; } サブクラス class houteisiki2 extends houteisiki1{ static int kai(int a, int b, int c, int x){ kai=(a*x*x)+(b*x)+c; if((b*b)+(-4*a*c)>0){ return kai; }else{ println("エラー"); } } } テストクラス class test{ public static void main(string[] args){ ここまで作りましたが、解らなくなりましたので教えてください。 まだ、JAVAを勉強して日が浅いので解りやすく教えてください。

    • ベストアンサー
    • Java
  • ファイルコピーとコードの綺麗な書き方について

    質問です。 特定のファイル名を複数コピーする場合、 理想な処理はなんでしょうか? 1. IF文でファイルを確認してコピー処理 2. *.txtにファイル名を予め書き込んでおいて、   1行づつ読み込んで検索してコピー処理 など…、 コードが綺麗に見えて、尚且つ何処に何があるか オープンソースにした時他人がひと目で分かるような 処理構造とはなんでしょうか? あと If File.Exists("C:\test_A.txt") Then File.Copy("C:\test_A.txt", "D:\test_A.txt", True) Else If File.Exists("C:\test_B.txt") Then File.Copy("C:\test_B.txt", "D:\test_B.txt", True) Else MessageBox.Show("test_B.txt" & vbCr & vbCr & _ "ファイルが見つかりません。再度ダウンロードして下さい", "Error", _ MessageBoxButtons.OK, MessageBoxIcon.Error) End If MessageBox.Show("test_A.txt" & vbCr & vbCr & _ "ファイルが見つかりません。再度ダウンロードして下さい", "Error", _ MessageBoxButtons.OK, MessageBoxIcon.Error) End If と永遠に書いてると、何が何処にあるのか難しいです。 一つ一つの確認に~は無い。~はある場合はコピーというのしたいです。 このIF文も何らかの形で解りやすい処理方法に変更してくれれば 幸いです。 【回答お願い】 1. 最も綺麗に見えて他人からも理解出来て処理が   重くならない方法でコピーするコードを書くには? 2. 上記で記載したIF文を500行ぐらい書いています。   もっと綺麗に書く方法はありますか?

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • テキストファイルの読み込みについて

    先ほどいくつかの回答をいただきありがとうございました。 またもや分からないことがあります、よろしくご回答お願いします。 test.txtと言うファイルを作り、その中は、10,20,30,40, 50,60としています。 これを以下のプログラムをVisual C++ 2005 Express Editionでコンパイルすれば読み込めるんですが、 #include <stdio.h> int main(void) { int i,j,k,l,m,n; FILE *file; file = fopen("test.txt","r"); fscanf(file,"%d,%d,%d,%d,%d,%d",&i,&j,&k,&l,&m,&n); fclose(file); printf("i = %d : j = %d : k = %d : l = %d : m = %d : n = %d\n",i,j,k,l,m,n); return 0; } このtest.txtをDドライヴの中のfileと言うフォルダに移した場合 どのようにプログラムを書き換えれば良いのでしょうか。

  • クラスパス配下のファイル名一覧取得

    ある、クラスパスの通ったフォルダ(仮にdir)があったとして そのフォルダ内にあるファイル名一覧を取得したいと考えております。 dir/ ->a.txt ->b.txt ->c.txt 結果:a.txt、b.txt、c.txt ClassLoader クラスなどを用いて取得しようと考えたのですが、 getSystemResource() メソッドなどはファイル名まで指定しないと 取得できないみたいで、現時点で望む処理ができない状態です。 フォルダまでの絶対パスの指定はしたくないため、 Fileクラスも使用できない状態です。 このような処理をやったことがある方は、 どうかご教授お願いいたします。