JFileChooser для открытия нескольких файлов txt - программирование

JFileChooser для открытия нескольких файлов txt

Как я могу использовать JFileChooser для открытия двух текстовых файлов, и после того, как я выбрал эти файлы, я хочу сравнить их, показать на экране и т.д. Возможно ли это?

4b9b3361

Ответ 1

Вы можете выбрать JFileChooser несколько файлов и вернуть массив объектов File вместо одного

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

Метод showOpenDialog(frame) возвращается только после нажатия кнопки ok

ИЗМЕНИТЬ

Сделайте так:

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

Ответ 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();