web-dev-qa-db-fra.com

JFileChooser pour ouvrir plusieurs fichiers txt

Comment puis-je utiliser JFileChooser pour ouvrir deux fichiers texte et après avoir sélectionné ces fichiers, je veux les comparer, les afficher à l'écran, etc. Est-ce possible?

19
zenx

Vous pouvez avoir votre JFileChooser sélectionner plusieurs fichiers et renvoyer un tableau d'objets File au lieu d'un

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

La méthode showOpenDialog(frame) ne revient que lorsque vous cliquez sur le bouton ok

MODIFIER

Faites donc ceci:

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

Et changez votre readFileAsList en:

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

Vous pouvez utiliser:

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

Vous pouvez ensuite utiliser les descripteurs de fichier renvoyés pour effectuer la comparaison.

12
Reimeus

Dans mon cas, je l'ai résolu en déclarant le cadre comme une variable locale initialisée définie sur null:

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

Component frame = null;

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