2012-02-21 1 views
-1

Suite à ma précédente question, mon programme ne détecte pas les 300 images qui viennent d'être créées dans un répertoire particulier; au lieu de cela, il ne détecte que desktop.ini, ce qui n'est pas le cas car je peux physiquement voir que les fichiers ont été créés dans ce répertoire et existent.Java - Impossible de détecter les fichiers

Quelqu'un peut-il expliquer pourquoi cela se produit comme lorsque je lance le programme la prochaine fois, cela semble fonctionner correctement? Le seul moyen de détecter quelque chose dans le répertoire lors de la première exécution est de savoir s'il existe au moins un fichier existant dans le répertoire avant la compilation et l'exécution du programme.

Merci beaucoup.

MISE À JOUR: Les fichiers sont détectés comme suit: « Combien de chatons sont sous mon bureau en ce moment »

//Default greyscale image directory (to convert from greyscale to binary). 
static File dirGrey = new File("test_images\\Greyscale"); 
//Array of greyscale image filenames. 
static File imgListGrey[] = dirGrey.listFiles(); 
+2

Pas ici, ni dans votre question initiale, avez-vous décrit exactement comment vous "détectez" les fichiers. Comment implémentez-vous le pseudo-code "Pour toutes les images dans le nouveau répertoire"? Afficher le code –

+4

Eh bien, le code que vous avez ajouté montre probablement votre problème. Lorsque vous créez la liste de fichiers dans un tableau 'static', elle est créée lorsque la classe contenant le tableau est chargée par le chargeur de classe Java, qui est probablement * avant * de créer les fichiers image. –

+0

@Joonas Merci! J'ai déplacé la liste de fichiers dans la méthode elle-même et cela a fonctionné. Si vous postez votre commentaire en réponse directe, je le sélectionnerai comme réponse acceptée. – MusTheDataGuy

Répondre

1

Vous créez la liste de fichiers dans un tableau static et elle est créée lorsque la classe contenant le tableau est chargée par le chargeur de classe Java, probablement avant la création des fichiers image. C'est pourquoi le tableau contient une liste périmée.

static est rarement nécessaire, surtout utile pour les constantes (choses qui ne changent jamais, comme 42), pour les fonctions pures (Math.sqrt()) et quelques autres cas particuliers. Lorsque vous l'utilisez, vous devez apprendre tous les trucs de l'ordre d'initialisation difficile. Sinon, il suffit de coller avec des variables non statiques.

2

sans savoir comment créer les images, cette question est semblable à

Créez-vous les fichiers vous-même? Si oui, fermez-vous les handles de fichiers faisant référence à ces fichiers une fois qu'ils ont été créés?

+0

Ma question précédente explique tout cela en détail. Cependant, je lis dans tous les fichiers [image] dans un répertoire particulier, les convertis en niveaux de gris et enregistrés dans un autre répertoire [vide], et c'est là que se trouve le problème; les images nouvellement générées ne sont pas détectées, sauf si je) exécute le programme une seconde fois, ou b) ai au moins un fichier [image] dans le répertoire avant de le lancer pour la première fois (dans ce cas, seul le fichier préexistant les images sont détectées). – MusTheDataGuy

+0

En outre, je voudrais savoir pourquoi 'desktop.ini' est détecté dans le répertoire 'vide' ...? – MusTheDataGuy

+2

Je pense que la question est mal formulée. C'est le * code que vous avez écrit *, en Java, qui ne répond pas à vos exigences. Votre question donne l'impression que le JDK est en erreur. Sans voir votre code, je parie que ce n'est pas le cas. Vous progresserez plus rapidement si vous commencez à supposer que votre code et votre compréhension de la manière dont Java doit agir constituent le problème. – duffymo

Questions connexes