2016-11-20 1 views
2

그래서 최근에 내 txt 파일이 열리지 않는이 문제가 발생합니다. 내가 잘못 된 곳을 정확하게 알지 못합니다. 다음은 내 파일 선택기 클래스의 코드입니다.파일 선택자가 내 파일을 열 수 없습니다

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 

public class FileChooser { 

public static void emailFile(JTextArea textRecepients) throws IOException { 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new File(".")); 
    chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { 

     public boolean accept(File f) { 
      return f.getName().toLowerCase().endsWith(".txt") 
      || f.isDirectory(); 
     } 

     public String getDescription() { 
      return "txt file"; 
     } 
    }); 

    int r = chooser.showOpenDialog(new JFrame()); 
    if (r == JFileChooser.APPROVE_OPTION) { 
     String name = chooser.getSelectedFile().getName(); 
     System.out.println(name); 
     String line; 
     try { 
      FileReader fileReader = new FileReader(name); 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 

      while((line = bufferedReader.readLine()) != null) { 
       textRecepients.setText(line); 
      } 
      bufferedReader.close();   
     } catch(FileNotFoundException ex) { 
      System.out.println("Unable to open file '" + name + "'");     
     } 
    } 
} 

나의 txt 파일을 가져오고 JTextArea에 선으로 내용 라인을 인쇄 할 JFileChooser를 사용하기로했다.

+2

코드를 실행하면 어떻게됩니까? ? – ItamarG3

+0

디버거에서 코드를 단계별로 실행 해 보았습니까? – Bill

+0

작동 시키셨습니까? – ItamarG3

답변

2

는 대신 이름을 얻는

String path = chooser.getSelectedFile().getAbsolutePath(); 

를 사용해야합니다. 블록에서 다음과

StringBuilder sb = new StringBuilder(); 

:

while((line = bufferedReader.readLine()) != null) { 
    textRecepients.setText(line); 
} 

StringBuilder 사용 :
(전 try 블록)

문제는 때마다 루프가 텍스트를 덮어 쓸 것입니다 :

while ((line = bufferedReader.readLine()) != null) { 
    sb.append(line+"\n"); 
} 
textRecepients.setText(sb.toString()); 
... 
+0

문자열 작성기에 대해 생각 나게 해 주셔서 감사합니다! : p는 때로는 그냥 비워 둡니다. – Fallspell

+0

나는 디버거로 코드를 밟아서 FileReader (name)에 도달 할 것이다. 줄을 찾은 다음 예외가 발견되지 않는 파일로 건너 뜁니다. – Fallspell

+0

글쎄, 그것은 당신이 존재하지 않는 경로를 작성했기 때문입니다. 이 때문에 대답을 받아 들일 수 없습니까? (나는 혼란스러운 질문 일 수 있으므로 확실하게 알고 싶다.) – ItamarG3