2010-10-08 5 views
0

Fondamentalement, j'ai un répertoire avec quelques fichiers dedans. Dans les configurations d'exécution, j'essaye de mettre le répertoire comme argument: \(workspacename\directory. Ensuite, le code suivant doit créer une liste de tous les fichiers dans ce répertoire:Comment entrer un répertoire en tant qu'argument dans Eclipse

String directory = args[1]; 
File folder = new File(directory); 
File[] allFiles = folder.listFiles(); 
ArrayList<File> properFiles = null; 
for (File file: allFiles) { 
    if(file.getName().endsWith(".dat")){ 
    properFiles.add(file); 
    } 
} 

le problème que je suis face est que pour certains allFiles raison est nulle.

+0

À quel problème faites-vous face? – Nivas

Répondre

5

Je vais prendre une deviner ce que votre problème est peut-être:

Si votre argument est un chemin relatif (par opposition à un chemin absolu, regardant fixement avec «/» ou « c:/», par exemple) , gardez à l'esprit que les fichiers seront relatifs au répertoire de travail de l'application.

Donc new File(directory) sera relatif à l'endroit où l'application est démarrée. Dans Eclipse, le répertoire de travail par défaut est dans le projet. Donc, si votre projet est au plus haut niveau de l'espace de travail, ce sera quelque chose comme workspacename/project. Vous pouvez essayer d'imprimer folder.getAbsolutePath(), folder.exists() et folder.isDirectory() pour vous aider à diagnostiquer votre problème.

0

Les javadocs disent listFiles() retournera null si le répertoire n'existe pas réellement (entre autres):

renvoie null si ce chemin abstrait ne signifie pas un répertoire, ou si une erreur d'E/S se produit .

Déboguez en vérifiant (débogueur ou printf) la valeur args[1]. En outre, il semble que vous essayez d'utiliser une variable de substitution pour insérer l'emplacement de l'espace de travail dans le chemin. Si c'est le cas, vous devez vérifier (via le débogueur ou printf) que l'espace réservé est correctement remplacé.

Questions connexes