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

标签 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中逐行打印内容。

最佳答案

您需要使用

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

而不是获取名称。

问题是每次循环都会覆盖文本:

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

使用StringBuilder:
(在 try block 之前):

StringBuilder sb = new StringBuilder();

然后在 block 中:

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

关于java - 文件选择器无法打开我的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707222/

相关文章:

java - SwingUtilities/Platform .runLater 之间有什么区别?

Java - 使用 JFileChooser 将字符串路径存储在表中,获取设置方法?

java - CancelSelection() 后 JFileChooser 不会消失

java - 为什么 append 函数在 ActionListener 中不起作用?

java - 如何使用HTTP-GET连接输入用户名和密码访问API

java - 升级到macOS Big Sur v11.0.1后的JAVA_HOME错误

java - 关于 Solace 属性何时有效的困惑

java - xwiki java.lang.OutOfMemoryError : PermGen space 错误

java - 在Java Swing中,有没有办法将文件保存到某种 'lib'文件夹中?

java - JFileChooser 浏览远程文件系统