Choisir un fichier

Résolu
Vitaldix Messages postés 124 Statut Membre -  
Vitaldix Messages postés 124 Statut Membre -
Salut !
Alors voilà j'ai un ptit problème ! j'aimerai que mon programme demande à l'utilisateur de choisir un fichier, l'utilisateur peut choisir le fichier qu'il veut, et le programme récupère ce qu'il y a dans ce fichier.

J'ai ça :
File file = new File("emplacement_fichier");
Scanner sc = new Scanner(file);


qui fonctionne à merveille mais bien sûr ça ne fonctionne que pour le fichier placé à cet endroit.

J'ai aussi trouvé ça :
FileSystemView vueSysteme = FileSystemView.getFileSystemView();
//récupération des répertoires
File defaut = vueSysteme.getDefaultDirectory();
File home = vueSysteme.getHomeDirectory();
//création et affichage des JFileChooser
JFileChooser defautChooser = new JFileChooser(defaut);
defautChooser.showOpenDialog(null);
JFileChooser homeChooser = new JFileChooser(home);
homeChooser.showOpenDialog(null);


Là je peux bien me balader dans mes répertoires, je peux sélectionner le fichier que je veux, sauf qu'il ne se passe rien ! J'ai l'impression que je ne peux pas récupérer mon fichier !

J'ai essayé de bidouiller des trucs, faire un mixe entre ces deux morceaux de codes mais rien ne va, vous pouvez me débloquer ?

Merci !
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Les JFileChooser ne font que le choix d'un (ou plusieurs) fichier (et/ou répertoires) pour la lecture (ou l'écriture), mais une fois les fichiers choisis c'est à toi de faire le traitement.

Voir : How to Use File Choosers

JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

if (chooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
    File[] files = chooser.getSelectedFiles();
    ...
}
1
Vitaldix Messages postés 124 Statut Membre 6
 
Je n'arrive pas à effectuer le traitement avec un Scanner !
Scanner sc = new Scanner(files);
ne fonctionne pas.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
C'est parce que "files" est un tableau, pas un fichier !
Il contient tous les fichiers sélectionnés, il faut donc traiter les fichiers un par un avec ton Scanner.

File[] files = chooser.getSelectedFiles();
for (File file : files)
{
    Scanner sc = new Scanner(file);
    ...
    sc.close();
}
0
Vitaldix Messages postés 124 Statut Membre 6
 
Ah, oui ! mais à la base je veux seulement sélectionner un seul fichier, ça ne serait pas plus simple dans ce cas ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Il y a un raccourci avec la méthode getSelectedFile qui renvoie un seul fichier, mais il faut être sûr que tu ne peux en choisir qu'un, parce que si tu en choisis plusieurs mais qu'un seul est gardé il y aura un problème...

chooser.setMultiSelectionEnabled(false);

if (chooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
    File file = chooser.getSelectedFile();
    Scanner sc = new Scanner(file);
    ...
    sc.close();
}
0
Vitaldix Messages postés 124 Statut Membre 6
 
Merci, ça fonctionne !
Par contre j'ai un soucis au niveau de l'exécution du programme, maintenant j'ai
Exception while removing reference: java.lang.InterruptedException
java.lang.InterruptedException
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	at java.lang.ref.ReferenceQueue.remove(Unknown Source)
	at sun.java2d.Disposer.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

tu sais d'où ça vient ?
0