Quello che vogliamo ottenere è un JTree riempito con directory e file in maniera ricorsiva.

Quindi, scelta la directory iniziale attraverso un JFileChooser, riempiamo il JTree.

Cominciamo dal JFileChooser:

import java.io.File;
import javax.swing.JFileChooser;

public class FileChooserOpen extends JFileChooser {

    private File dir = null;

    public FileChooserOpen() {
        super("Scegli directory");
        setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        setAcceptAllFileFilterUsed(false);
    }

    @Override
    public void approveSelection() {
        dir = getSelectedFile();
        super.approveSelection();
    }

    public File getDir() {
        return dir;
    }
}

A questo punto, impostiamo un evento dove vi pare, che lancia il JFileChooser e prende la directory scelta.

JList è un componente SWING che rappresenta una serie di oggetti sotto forma di lista.

Qui avevo spiegato come caricare una JLlist da una file XML per esempio.

Oggi vediamo come esportarli in formato TXT.

Inoltre integreremo utto con il solit JFileChooser per decidere dove salvare il file.

Prima di tutto nel vostro JFrame preparate l'evento che poi richiamerà il JFC (ad esempio un menu o un bottone).

Poi preparate il JFC; tipo questo:

import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class FileChooserTxt {

    private static File f = null;

    public static String salva() throws IOException {
        JFileChooser fc = new JFileChooser();
        fc.setDialogTitle("Save TXT");
        fc.setApproveButtonText("Save");
        fc.setApproveButtonToolTipText("Approve file");

        FileFilter txtFilter = new GenericFileFilter("File *.txt", "txt");
        fc.setFileFilter(txtFilter);

        int returnVal = fc.showSaveDialog(fc);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            f = fc.getSelectedFile();
            FileFilter selectedFilter = fc.getFileFilter();
            if (f.getName().indexOf('.') == -1) {
                f = new File(f.getPath() + ".txt");
            }
        }
        return f.toString();
    }
}

Qui ho messo un solo filtro perchè l'esportazione la faccio solo in TXT.

In giro si trovano varie librerie per leggere i tag dei file MP3 con java.

Tra le tante ho scelto questa: Jid3lib.

Prima di tutto considerate che esistono varie versioni di tag.

Qui potete una descrizione.

A questo punto partiamo; scaricate la libreria e aggiungetela al vostro progetto.

Quello di cui abbiamo bisogno è uno o più files da scansionare.

Se ad esempio volete scegliere il tutto tramite JFileChooser:

public class Main {

    private static File[] arrayFiles;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFileChooser fc = new JFileChooser(System.getProperty("user.home"));
                FileFilter mp3Filter = new FileNameExtensionFilter("MP3", "mp3");
                fc.setFileFilter(mp3Filter);
                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                fc.setMultiSelectionEnabled(true);
                int returnVal = fc.showOpenDialog(fc);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    arrayFiles = fc.getSelectedFiles();
                }
                FrameList fl = new FrameList(arrayFiles);
                fl.setVisible(true);
            }
        });
    }
}


Dove FrameList è uno JFrame con dentro una JTextArea o un componente affine.

Questo articolo è molto simile a quello in cui descrivo come salvare con JFileChooser in Java.

Ho però aggiunto qualche riga in più.

Nello specifico quelle che si occupano di controllare se già esiste un file con lo stesso nome.

Articolo aggiornato.

Esistono vari modi per creare un jFileChooser.

Io l'ho inserito direttamente dentro al JFrame e parte quando viene richiamato l'evento da tastiera Ctrl+S o quando si clicca sul menu File->Salva.