JFileChooserを使用して2つのテキストファイルを開き、これらのファイルを選択した後、それらを比較したり、画面に表示したりする方法を教えてください。これは可能ですか?
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();
}
}
_
以下を使用できます。
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();
その後、返されたファイルハンドルを使用して比較を行うことができます。
私の場合、nullに設定された初期化されたローカル変数としてフレームを宣言することで解決しました:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
Component frame = null;
chooser.showOpenDialog(frame);
File[] files = chooser.getSelectedFiles();