2016-11-20 2 views
2

Так что у меня эта проблема недавно, когда мой txt-файл не открывается. Я не уверен, где именно я ошибся. Вот код из моего файла chooser class.File Chooser не может открыть файл

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 + "'");     
     } 
    } 
} 

Это, как предполагается использовать JFileChooser, чтобы получить мой текстовый файл и напечатать строку содержимого по линии в JTextArea.

+2

Что происходит при запуске кода ? – ItamarG3

+0

Вы пробовали выполнить код в отладчике? – Bill

+0

Вы получили его? – ItamarG3

ответ

2

Вы должны использовать

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

вместо того, чтобы имя.

Проблема заключается в том, что каждый раз, когда вы цикл перезаписи текста:

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

Используйте StringBuilder:
(перед try блок):

StringBuilder sb = new StringBuilder(); 

, а затем в блоке:

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

Спасибо, что напомнили мне о строкостроителе! : p иногда я просто затушевываю. – Fallspell

+0

Я прошел через код с помощью отладчика, который достанет FileReader (имя); line, а затем просто переходит к исключенному файлу. – Fallspell

+0

Ну, это потому, что вы написали путь, которого не существует. Из-за этого вы не приняли ответ? (Я мог бы вводить в заблуждение вопросы, поэтому я просто хочу быть уверенным) – ItamarG3

Смежные вопросы