web-dev-qa-db-fra.com

jfilechooser - définit le répertoire sur un chemin dans un fichier

J'essaie de définir le chemin du répertoire dans JFilechooser via quelque chose comme ceci (en utilisant commons-io):

String fileContents = IOUtils.toString(new FileInputStream("path.txt"));
File theDirectory = new File(fileContents);

filechooser = new JFileChooser();
fileChooser.setCurrentDirectory(theDirectory);
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

J'utilise getCanonicalPath () pour obtenir le chemin et écrire dans le fichier path.txt

path = file.getCanonicalPath();

Je n'ai pas l'intention de mettre tout mon code ici, mais je suis sûr que le programme écrit et lit le chemin dans le fichier path.txt. Je n'ai pas d'erreur, mais chaque fois que je lance le programme, ouvrez toujours JFilechooser dans mon dossier de documents. Qu'est-ce que je me trompe?

15
fermk090

Essayez de passer le répertoire actuel directement dans le constructeur:

filechooser = new JFileChooser(theDirectory);
21
Heisenbug

Si vous consultez le API en utilisant le constructeur par défaut (c'est-à-dire new JFileChooser()):

Construit un JFileChooser pointant vers Le répertoire par défaut de l'utilisateur. Ce paramètre Dépend du système d'exploitation . Il s'agit généralement du dossier "Mes Documents" sous Windows et du répertoire personnel de l'utilisateur Sous Unix.

Cela semblerait sembler tenir compte de l'ouverture constante à Mes documents, mais ceci n'est pas votre problème. En fait, votre problème réside dans la définition du répertoire actuel (i.e. setCurrentDirectory(theDirectory)):

Définit le répertoire en cours. En passant Null, le sélecteur de fichier pointe sur Le répertoire par défaut de l'utilisateur. Ce paramètre Dépend du système d'exploitation . Il s'agit généralement du dossier "Mes Documents" sous Windows et du répertoire personnel de l'utilisateur Sous Unix. Si le fichier Transmis en tant que currentDirectory n'est pas un répertoire, le parent du fichier Sera utilisé en tant que CurrentDirectory. Si le parent n'est pas traversable , Il parcourra l'arborescence parentale Jusqu'à ce qu'il trouve un répertoire traversable ou atteigne la racine du système de fichiers .

Cela dit, je ferais attention au texte en surbrillance car il semble que vous définissiez un fichier comme répertoire actuel et non un répertoire .

6
mre

Pour sélectionner le dernier répertoire que vous ouvrez: 

chooser.setCurrentDirectory(lastDirectory);

int r = chooser.showOpenDialog(new JPanel());

if (r == JFileChooser.APPROVE_OPTION) {
   fileName = chooser.getSelectedFile().getPath();
   lastDirectory = chooser.getSelectedFile();
}
1
Batuhan Bardak

JFileChooser Chooser = new JFileChooser ("F:");

1
A.Mohamed Bilal

si vous voulez changer le répertoire theb, utilisez la méthode System.getProperty

String s=System.getProperty("user.dir");  // changes directory from documents to the user current Directory;

JFileChooser jfc = new JFileChooser (s);

0
java graduates

Dans votre classe principale, déclarez 

public static String dirpath=".";

private void btnBrowseActionPerformed(Java.awt.event.ActionEvent evt) {    
 JFileChooser jfc = new JFileChooser(dirpath);
 dirpath =jfc.getSelectedFile().getAbsolutePath().toString();
}
0
pavan pandey