使用JFileChooser打开多个txt文件

21

我该如何使用JFileChooser打开两个文本文件,选择完这些文件后,我想要进行比较,并将结果显示在屏幕上等等。这是否可行?

3个回答

47

您可以让您的 JFileChooser 选择多个文件并返回一个文件对象数组而不是一个。

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();
    }
}

从文件选择器中获取的是一个文件数组。您可以使用compare(readFileAsList(files[0]), readFileAsList(files[1]))访问它们;但是,您需要更改readFileAsList以接受文件而不是字符串。 - La bla bla
另外,当你在StackOverflow上提出问题后,如果有人给出了正确的答案,请将其标记为已接受(答案下方的V符号)。这有助于其他人在搜索类似问题时确定该答案的正确性。 - La bla bla
只需编辑您的答案以包含您的代码,我会尽力帮助您。 - La bla bla
我也无法从D驱动器中选择任何文件。 - zenx
如果您不更改leftList = ..和rightList = ..,那么您只会选择在代码中编写的文件,而不是使用JFileChooser。您遇到了什么错误?请发送电子邮件至lablabla@gmail.com,以便我们不会在此处发表评论。我会尽快回答。 - La bla bla
显示剩余4条评论

12

你可以使用以下代码:

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();

你可以使用返回的文件句柄进行比较。


4
在我的情况中,我将frame声明为一个已初始化的本地变量并将其设置为null来解决这个问题:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);

Component frame = null;

chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接