所以我最近遇到了这个问题,我的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
中逐行打印内容。
答案 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());
...