Java JFileChooser打开多个txt文件

Java JFileChooser打开多个txt文件,java,swing,jfilechooser,Java,Swing,Jfilechooser,如何使用JFileChooser打开两个文本文件,在我选择这些文件后,我想比较它们,在屏幕上显示等。这可能吗?您可以让您的JFileChooser选择多个文件并返回一个文件对象数组,而不是一个文件对象数组 JFileChooser chooser = new JFileChooser(); chooser.setMultiSelectionEnabled(true); chooser.showOpenDialog(frame); File[] files = chooser.getSelecte

如何使用JFileChooser打开两个文本文件,在我选择这些文件后,我想比较它们,在屏幕上显示等。这可能吗?

您可以让您的
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();
    }
}
私有静态列表readFileAsList(文件文件)引发IOException{
最终列表ret=新的ArrayList();
final BufferedReader br=新BufferedReader(新文件读取器(文件));
试一试{
弦斯特林;
而((strLine=br.readLine())!=null){
ret.add(strLine);
}
返回ret;
}最后{
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();

然后,您可以使用返回的文件句柄进行比较。

在我的例子中,我解决了它,将frame声明为初始化的局部变量设置为null:

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);

Component frame = null;

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

从文件选择器获得的是一个文件数组。您可以使用compare(readFileAsList(文件[0])、readFileAsList(文件[1])访问它们;但是您需要将readFileAsList更改为接受文件而不是字符串如果您使用Java的内置方法,您不需要做任何事情,因为它已经接受文件对象,但是在不查看当前代码的情况下很难帮助您另外,当您问问题时,一旦在StackOverflow中有人给了您正确的答案,请将其标记为已接受(答案下的V)如果有人搜索类似的问题,他可以判断此答案是正确的,只需编辑您的答案以包含您的代码,我将尝试帮助您La bla bla bla首先非常感谢您,但我是否有必要更改此部分?leftList=(ArrayList)readFileAsList(“C:\\Files\\file1.txt”);rightList=(ArrayList)readFileAsList(“C:\\Files\\file2.txt”);