2012-01-03 10 views
0

코드를 실행하는 동안 FileNotFoundException이 발생합니다. 내 파일 이름은 filecontent.java ...Java 프로그램 실행 중 FileNotFoundException 오류가 발생했습니다.

정의 : 4 개의 TextField 및 4 개의 TextAreas가있는 프로그램을 만들고 싶습니다. TextField에서 파일의 이름을 입력하면 해당 텍스트 영역에 해당 텍스트 영역이 표시되어야합니다.

오류 :

예외 전자 : 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 ("예외 e :"+ ioe);'대신'ioe.printStackTrace()'를 넣고 출력 내용을 보여주십시오. 또한, 당신은 'NullPointerException'과'FileNotFoundException' 사이에 혼란 스러울 것 같습니다. – adarshr

+0

그래서'NullPointerException' 또는'FileNotFoundException'을 얻고 있습니까? –

+0

@adarshr : printStackTrace()는 오류가 있음을 보여줍니다. ** fin [i] = new FileReader (t [i] .getText()); **. FileNotFoundException 받고 있는데 ... 위의 줄에 무엇이 잘못되었는지 이해하지 못합니다. TextFiled에서 텍스트를 가져옵니다. 그 텍스트는 ok.so가되어야합니다. 실제로 잘못된 것입니까? –

답변

0
귀하의 예외가이 라인에서 온 수 있습니다

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

파일 이름뿐만 아니라 전체 경로를 사용해야한다고 생각합니다.

0

우선, 파일에 textField 대신 FileDialog를 사용하지 않는 이유는 무엇입니까? 둘째, 상대 경로를 사용하므로 프로그램이 작동하려면 filecontent.java 파일이 .class 파일과 동일한 위치에 있어야합니다.

0

Java에서 파일을 읽을 때 filepath 구문은 시스템에 따라 다릅니다. 따라서 사용중인 운영 체제에 따라 경로를 적용해야합니다. 코드의 경우 filecontent.java은 같은 디렉토리에 있어야합니다.

+0

filecontent.java는이 코드가있는 파일입니다. 따라서 경로와 관련된 문제가 발생한다고 생각하지 않습니다. –

1

NullPointerException이 없습니다. FileNotFoundException이 있습니다. 이 예외의 이름에서 말하듯이 열려는 파일을 찾을 수 없기 때문입니다. 실패

첫 번째 파일 액세스는 이것이다 : 당신의 자바 파일이 SRC (또는 다른) 프로젝트의 폴더에 위치해 있습니다

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

경우 폴더를 추가해야합니다. 예 : src/filecontent.java

일부 다른 노트 :

  • 컨벤션 자바 클래스 이름으로는
  • 귀하의 변수 이름 t, ta, p1, etc.가 혼란 스러울 수 대문자로 시작합니다. 왜 textFields, textAreas, panel을 사용하지 않으시겠습니까?
  • 나는이 줄의 ArrayIndexOutOfBoundsException을 실행할 것이라고 생각한다. while(cnt<=4) . 배열 인덱스는 0부터 시작하여 n - 1로 끝납니다 (귀하의 경우 = 3)
  • catch 블록의 stacktrace를 디버깅하는 데 도움이 될 수 있습니다 : ioe.printStackTrace(). 코드는 귀하의 의견을 바탕으로
+0

조언을 주셔서 감사합니다. 나는 ioe.printStackTrace()를 시도했습니다. \t ** fin [i] = new FileReader (t [i] .getText()); ** –

+0

은 t [i]와 유사합니다 .getText()에는 유효한 파일 이름이 없습니다. – micha

0

가, 대답은 파일이 문제/혼란을 피할 수 실제로 a.txt.txt 탐색기에서 파일 확장명을 표시 탐색기에서 a.txt로 표시되지만 있다는 것이다 실패 할 경우 이것은 당신에게 정확한 행 번호를 제공합니다.


파일 경로를 사용할 때 파일 경로는 작업 디렉토리와 관련이 있습니다 (예 :응용 프로그램이 실행 된 곳. 소스 코드를 찾을 수있는 곳이 아닙니다. 작업 디렉토리가 무엇인지 모르는 경우 전체 경로 이름을 사용해야합니다.

+0

전체 경로 이름을 사용해 보았지만 여전히 오류가 발생했습니다 ... –

+0

파일이 생각 나지 않거나 전체 경로 이름이 올바르지 않습니다. 예를 들어'DIR full-path-name'을 할 수 있습니까? –

+0

예 DIR "전체 경로"시도 .. 작동 ... 그래서 경로가 올바른 ... –

관련 문제