2012-01-03 18 views
0

コードの実行中にFileNotFoundExceptionが発生しました。 私のファイル名はfilecontent.java ...Javaプログラム実行中にFileNotFoundExceptionエラーが発生しました

定義:4つのTextFieldと4つのTextAreasを持つプログラムを作成したいと思います。 TextFieldでファイルの名前をタイプすると、その内容は対応するTextAreaに表示されます。

エラー:

例外e:java.io.FileNotFoundException:

マイコード:

import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 

class filecontent extends Frame implements ActionListener 
{ 
    TextField t[]=new TextField[4]; 
    TextArea ta[]=new TextArea[4]; 
    Button submit,exit=new Button("Exit"); 
    Panel p1; 
    filecontent() 
    { 
     setGUI(); 
     setRegister(); 
     try{ 
      showfile(); 
      } 
     catch(IOException ioe) 
     { 
      System.out.println("Exception e : "+ioe); 
     } 
     setTitle("FileData"); 
     setVisible(true); 
     setSize(300,300); 
     setLocation(500,200); 
     addWindowListener(new WindowAdapter() 
      { public void windowClosing(WindowEvent we) 
       { System.exit(0); } 
      }); 
    } 

    void setGUI() 
    { 
     p1=new Panel(); 
     p1.setLayout(new GridLayout(5,4,10,10)); 
     for(int i=0;i<4;i++) 
     { 
      t[i]=new TextField(10); 
      ta[i]=new TextArea(); 
      p1.add(t[i]); 
      p1.add(ta[i]); 
     } 
     submit=new Button("Submit"); 
     p1.add(submit); 
     p1.add(exit); 
    } 

    void setRegister() 
    { 
     submit.addActionListener(this); 
     exit.addActionListener(this); 
    } 

    void showfile() throws java.io.IOException 
    { 
     FileReader fin[]=new FileReader[4]; 
     FileReader fn=new FileReader("filecontent.java"); 
     BufferedReader br[]=new BufferedReader[4]; 

     for(int i=0;i<4;i++) 
     { 

      fin[i]=new FileReader(t[i].getText()); 

     } 
     int cnt=1; 
     String s; 
     fn=fin[0]; 
     br[0]=new BufferedReader(fn); 
     while(cnt<=4) 
     { 
      if((s=br[cnt-1].readLine())!=null) 
      { 
       ta[cnt-1].append(s+""); 
      } 
      else 
      { 
       fin[cnt-1].close(); 
       cnt++; 
       fn=fin[cnt-1]; 
       br[cnt-1]=new BufferedReader(fn); 
       ta[cnt-1].setText(""); 
      } 
     } 
    } 

    public void actionPerformed(ActionEvent ae) 
    { 
     if(ae.getSource()==submit) 
     { 
      try{ 
       showfile(); 
       } 
      catch(IOException ioe) 
      { 
       System.out.println("Exception e"+ioe); 
      } 
     } 
     else if(ae.getSource()==exit) 
      { 
      System.exit(0); 
      } 
    } 

    public static void main(String ar[]) 
    { 
     new filecontent(); 
    } 
} 
+2

'System.out.println(" Exception e: "+ ioe);'の代わりに 'ioe.printStackTrace()'を入れて、何を印刷するかを教えてください。また、あなたは 'NullPointerException'と' FileNotFoundException'の間で混乱しているようです。 – adarshr

+0

'NullPointerException'または' FileNotFoundException'を取得していますか? –

+0

@adarshr:printStackTrace()はエラーが発生していることを示します。** fin [i] = new FileReader(t [i] .getText()); **。私はFileNotFoundExceptionを取得しています...私は上記の行に間違っていることを理解していません.TextFiledからテキストを取得します。 –

答えて

0
あなたの例外は、このラインから来ている可能性があり

FileReader fn=new FileReader("filecontent.java"); 

ファイル名だけでなく、フルパスを使うべきだと思います。

0

まず、ファイルのtextFieldではなくFileDialogを使用してください。第2に、相対パスを使用しているため、プログラムの動作にはファイルfilecontent.javaが.classファイルと同じ場所になければなりません。

0

ファイルをjavaで読むとき、filepathの構文はシステムによって異なります。したがって、使用しているオペレーティングシステムに応じてパスを適用する必要があります。 また、あなたのコードのファイルfilecontent.javaは同じディレクトリになければなりません。

+0

filecontent.javaは、このコードがあるファイルです。これは、パスに関連する問題が発生すると考えています。 –

1

NullPointerExceptionはありません。あなたはFileNotFoundExceptionを持っています。この例外の名前は、開こうとするファイルが見つからないためです。あなたのjavaファイルは、SRC(または他の)フォルダを追加する必要があり、プロジェクトのフォルダ内にある場合

FileReader fn=new FileReader("filecontent.java"); 

失敗した最初のファイルへのアクセスは、この一つです。例えば。 src/filecontent.java

他のいくつかの注意事項:

  • 大会のJavaクラス名では
  • あなたの変数名t, ta, p1, etc.が混乱することができます大文字で始まります。なぜtextFields, textAreas, panelを使用しないのですか?
  • 私はあなたがこの行のArrayIndexOutOfBoundsExceptionを実行すると思いますwhile(cnt<=4) 。配列インデックスは0から始まり、n - 1(あなたの場合は3)で終わります。
  • キャッチブロックのスタックトレースをデバッグするのに役立ちます:ioe.printStackTrace()。これはあなたのコードをあなたのコメントに基づいて
+0

アドバイスをいただきありがとうございます。私はioe.printStackTrace()を試しました。 \t ** fin [i] = new FileReader(t [i] .getText()); ** –

+0

はt [i]と似ています.getText()には有効なファイル名が含まれていません。 – micha

0

を失敗した正確な行数を与え、答えはファイルをエクスプローラでa.txtとして表示されていることであるが、実際には、エクスプローラでa.txt.txt表示ファイルの拡張子であることは、この問題/混乱を避けることができます。


ファイルパスを使用する場合、ファイルパスは作業ディレクトリアプリケーションが実行された場所。ソースコードが見つからない場所。作業ディレクトリがわからない場合は、絶対パス名を使用する必要があります。

+0

私は完全なパス名を試しましたが、まだエラーがあります... –

+0

ファイルは、それが正しいとは思われないか、絶対パス名が正しくありません。たとえば、 'DIR full-path-name'を実行できますか? –

+0

はい私はDIRの "フルパス"を試しました..それは動作します...パスは正しいです... –

関連する問題