View Full Version : [Java] JFileChooser - caricare directory
Emaborsa
09-04-2010, 09:58
Ciao,
ho usato JFileChooser per poter selezionare file, me li apre e il programma ora funziona. Volevo modificarlo in modo che JFileChooser mi dia la possibilità di selezionare una cartella e quando clicco OK mi crei un array con tutti i file contenuti in quella cartella. Come faccio? Ho già usato DIRECTORIES_ONLY per dirgli di mostrarmi solo le directory, ma non trovo un metodo per dirgli di guardare dentro la cartella.
Qualche dritta?
banryu79
09-04-2010, 10:27
Come faccio? Ho già usato DIRECTORIES_ONLY per dirgli di mostrarmi solo le directory, ma non trovo un metodo per dirgli di guardare dentro la cartella.
Dopo aver visualizzato il file chooser e aver ottenuto il valore di ritorno, puoi interrogarlo per chiedergli la directory selezionata (metodo getSelectedFile).
A quel punto hai in mano un java.io.File che rappresenta la directory sleezionata dall'utente: chiama uno dei suoi metodi list per ottenere i figli contenuti come un array di java.io.File.
Emaborsa
09-04-2010, 19:35
In effetti io avevo già usato getSelectedFiles così:
File[] list = c.getSelectedFiles();
se poi faccio list.length , non dovrebbe riportarmi quanti elementi sono? Te lo chiedo perchè a me ritorna 0. Facevo questo per vedere appunto se li ha presi o meno.
EDIT
se uso setMultiSelectionEnabled(true) posso selezionare più file e come dicevi anche tu, mi crea un array di FILE.
Ma la mia domanda era selezionando una cartella e prendere TUTTI i file in automatico.
banryu79
09-04-2010, 22:56
A quale scopo mostri il file chooser all'utente?
Deve selezionare una sola cartella della quale "prendere" tutti i file in essa contenuti?
In tal caso la modalità di selezione ovviamente sarà a singolo elemento, e sarà possibile selezionare solo le directory.
L'utente può chiudere il file chooser in due modi: o approvando una selezione, oppure cancellando l'azione.
Dopo aver verificato di essere nel primo caso [if(JFileChooser.APPROVE_OPTION==filechooser.showXXXDialog())], si chiede al file chooser di restituirci il selected file [File slectedFile=filechooser.getSelectedFile()], che ovviamente sarà una directory.
Da questa ci facciamo restituire tutti gli elementi-figli che essa contiene, e che sono "file" (le directory non ci interessano, presumo. Oppure sì e in tal caso bisogna visitarle ricorsivamente) [File[] files=selectedFile.list(new java.io.FileFilter(){public boolean accept(File candidate){return candidate.isFile();}})].
Ora nell'array 'files' hai tutti gli oggetti java.io.File di tipo "file" contenuti nella directory scelta dall'utente.
Emaborsa
11-04-2010, 20:01
A quale scopo mostri il file chooser all'utente?
Deve selezionare una sola cartella della quale "prendere" tutti i file in essa contenuti?
In tal caso la modalità di selezione ovviamente sarà a singolo elemento, e sarà possibile selezionare solo le directory.
L'utente può chiudere il file chooser in due modi: o approvando una selezione, oppure cancellando l'azione.
Dopo aver verificato di essere nel primo caso [if(JFileChooser.APPROVE_OPTION==filechooser.showXXXDialog())], si chiede al file chooser di restituirci il selected file [File slectedFile=filechooser.getSelectedFile()], che ovviamente sarà una directory.
Da questa ci facciamo restituire tutti gli elementi-figli che essa contiene, e che sono "file" (le directory non ci interessano, presumo. Oppure sì e in tal caso bisogna visitarle ricorsivamente) [File[] files=selectedFile.list(new java.io.FileFilter(){public boolean accept(File candidate){return candidate.isFile();}})].
Ora nell'array 'files' hai tutti gli oggetti java.io.File di tipo "file" contenuti nella directory scelta dall'utente.
Questi giorni non ho molto tempo per fare delle prove, appena ci metto mano ti faccio sapere.
Intanto grazie.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.