web-dev-qa-db-ja.com

JFileChooserで複数のtxtファイルを開く

JFileChooserを使用して2つのテキストファイルを開き、これらのファイルを選択した後、それらを比較したり、画面に表示したりする方法を教えてください。これは可能ですか?

19
zenx

JFileChooserで複数のファイルを選択し、1つではなく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();
    }
}
_
35
La bla bla

以下を使用できます。

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

その後、返されたファイルハンドルを使用して比較を行うことができます。

12
Reimeus

私の場合、nullに設定された初期化されたローカル変数としてフレームを宣言することで解決しました:

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

Component frame = null;

chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();
3
Cristian Muñoz