文件选择器无法打开我的文件

时间:2016-11-20 17:41:36

标签: java jfilechooser

所以我最近遇到了这个问题,我的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 + "'");                
        }
    }
}

它应该使用JFileChooser获取我的txt文件并在JTextArea中逐行打印内容。

1 个答案:

答案 0 :(得分: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());
...