【问题标题】:JFileChooser to open multiple txt filesJFileChooser 打开多个txt文件
【发布时间】:2016-04-19 19:06:09
【问题描述】:

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

【问题讨论】:

    标签: java swing jfilechooser


    【解决方案1】:

    您可以让您的 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();
        }
    }
    

    【讨论】:

    • 从文件选择器中得到的是一个文件数组。您可以使用 compare(readFileAsList(files[0]), readFileAsList(files[1]));但您需要更改 readFileAsList 以接受 File 而不是 String
    • docs.oracle.com/cd/E26232_01/doc.11122/easjavaapi/com/essbase/… 如果你使用 Java 的内置方法,你不需要做任何事情,因为它已经接受 File 对象但是如果没有看到你当前的代码真的很难帮助你
    • 另外,当您提出问题时,一旦有人在 StackOverflow 中给您正确的答案,请将其标记为已接受(答案下方的 V)如果有人搜索类似的问题会有所帮助,他可以看出这个答案是正确的
    • 只需编辑您的答案以包含您的代码,我会尽力帮助您
    • la bla bla 首先非常感谢你,但我有必要改变这部分吗? leftList = (ArrayList) readFileAsList("C:\\Files\\file1.txt"); rightList = (ArrayList) readFileAsList("C:\\Files\\file2.txt");
    【解决方案2】:

    你可以使用:

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

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

    【讨论】:

      【解决方案3】:

      在我的情况下,我解决了它,将框架声明为设置为 null 的初始化局部变量:

      JFileChooser chooser = new JFileChooser();
      chooser.setMultiSelectionEnabled(true);
      
      Component frame = null;
      
      chooser.showOpenDialog(frame);
      File[] files = chooser.getSelectedFiles();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多