【发布时间】:2016-04-19 19:06:09
【问题描述】:
如何使用 JFileChooser 打开两个文本文件,选择这些文件后,我想比较它们,在屏幕上显示等。这可能吗?
【问题讨论】:
标签: java swing jfilechooser
如何使用 JFileChooser 打开两个文本文件,选择这些文件后,我想比较它们,在屏幕上显示等。这可能吗?
【问题讨论】:
标签: java swing jfilechooser
您可以让您的 JFileChooser 选择多个文件并返回一个 File 对象数组而不是一个
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();
方法showOpenDialog(frame)只有在你点击确定按钮后才会返回
编辑
这样做:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();
if(files.length >= 2) {
compare(readFileAsList(files[0]), readFileAsList(files[1]));
}
并将您的 readFileAsList 更改为:
private static List<String> readFileAsList(File file) throws IOException {
final List<String> ret = new ArrayList<String>();
final BufferedReader br = new BufferedReader(new FileReader(file));
try {
String strLine;
while ((strLine = br.readLine()) != null) {
ret.add(strLine);
}
return ret;
} finally {
br.close();
}
}
【讨论】:
你可以使用:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
// Show the dialog; wait until dialog is closed
chooser.showOpenDialog(frame);
// Retrieve the selected files.
File[] files = chooser.getSelectedFiles();
然后您可以使用返回的文件句柄进行比较。
【讨论】:
在我的情况下,我解决了它,将框架声明为设置为 null 的初始化局部变量:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
Component frame = null;
chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();
【讨论】: