CHERCHER UN FICHIER

cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014 - 1 oct. 2008 à 11:52
cs_parkour Messages postés 1 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 19 octobre 2008 - 19 oct. 2008 à 13:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48101-chercher-un-fichier

cs_parkour Messages postés 1 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 19 octobre 2008
19 oct. 2008 à 13:11
merci pour le code
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:42
oki je regarde
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 17:41
merci bien,
tu n'as besoin de mettre que les fonctions pas les classes et tout ca ;)
Verifie que se soit pas en doublon, surtout pour le listeDeFichiers qui existe deja il me semble
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:39
oki
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 17:37
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:37
c'est quoi codyx?
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 17:35
mets ces fonctions sur codyx et je desactiverais la source ...
En source on ne prends en general que des programme complet ...

Merci
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:32
voila qui est fais mais dans un autre "topic"
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 15:05
oui je vois justement je voulais faire ça avec une fonction qui se rappel si l'élément actuel et un dossier. j'ai l'idée mais pas le moyen de la faire car le problème est de faire une liste qui ... attend je viens d'avoir une idée je reste en suspend je vais essayer un truc
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 15:00
Non il y en a deja plusieurs et puis ca serais qqchose de different.

Je sais pas trop mais genre ce qui pourrais etre interressant c'est de pouvoir lister tout les fichiers d'un repertoire et ses sous repertoire avec un calcul du hash md5 ou ce genre de chose ...

Tu vois ce que je veux dire ?
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 14:59
a voir si tu penses que ca rentre dans le cadre de ta classe, sinon faire une autre classe concernant la modification de fichiers...
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 14:57
compression de fichier par exemple?
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 14:56
Apres si tu as d'autre fonction qui te servent pour la recherche de fichier tu peux les mettres de quoi faire une miniapi
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 14:51
oki
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 14:49
ajoute dans ta source la ca deviens interressant
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 14:46
c'est completement absurde!
j'ai deja le code pour faire une recherche
qui est archi simple en plus :

static File[] listeDeFichiers(String repertoire) {
File directoryToScan = new File(repertoire);
File[] fichiers = null;
System.out.println("Repertoire "" + repertoire + "" chargé.");
//Liste tous les fichiers contenue dans le dossier spécifier :
fichiers = directoryToScan.listFiles();
return fichiers;
}

c'est ce code qui viens avant la fonction ci tous dessus
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 14:42
dans ce cas fichierAChercher = "" ou null, et tu gères le cas en début de fonction

# static File[] listerRepertoire(File[] fichiers, String fichierAChercher)
# {# if (fichierAChercher null || fichierAChercher "") return fichiers;
# File[] listeDesFichiersTempo = new File[fichiers.length];
# ...
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 14:37
"
Je ne suis pas d'accord avec toi, si tu as des fonctions qui se rapportent à la recherche de fichiers, que ce soit sur le nom ou autre ou que ce soit dans un dossier, le but est le même donc la classe doit contenir toutes les fonctions."

oui mais si tu veux juste répertorier des fichiers sans en faire un filtrage....
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 14:30
dans ce cas mets les autres fonctions ... car la sois objectif, ton code tel quel ne sert pas a grand chose
donc sois tu mets un programme complet sois tu le mets sur codyx

Sinon j'ai parle du C quand tu as dit qu'une ou deux fonction par classe etait suffisant je pensais que tu occultais l'objet
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 14:28
quand il dit pas utile c'est ta classe, autant mettre directement ta fonction, au lieu de mettre une classe contenant une méthode

# si je crée un nouveau programme avec juste une des fonction que j'ai déjà développer, j'ai juste a intégré ma classe (un fichier quoi!) dans mon programme.

Je ne suis pas d'accord avec toi, si tu as des fonctions qui se rapportent à la recherche de fichiers, que ce soit sur le nom ou autre ou que ce soit dans un dossier, le but est le même donc la classe doit contenir toutes les fonctions.
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 14:23
oui c'est vrai sheorogath a raison, les classes doivent contenir un panel de fonctions permettant de faire des traitement.
Tu aurais pu faire une fonction qui recherche dans un répertoire mais qui appel ta fonction, pour reprendre l'exemple de sheorogath,

# File[] searchFile(File root, String pattern)
# {
# if (root == null) return null;
# File[] files = root.listFiles();
# if (files != null && files.length > 0)
# files = listerRepertoire(files , pattern);
# else return null;
# }
Faire de même pour d'autres fonctions; pourquoi pas une fonction pour rechercher par rapport à la date de création. y aurait ainsi plusieurs fonctions dans ta classe.

Par contre une remarque oublie pas de vérifier que les paramètres soient bien valides, non null par exemple.
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 14:15
je n'ai pas dit que que tu fais tout avec l'exemple que tu a mis,
j'ai juste dit que je répartissais mes fonction ce qui explique pourquoi il n'y a pas de fonction dont tu a donnée l'exemple. je m'explique

Ma fonction effectue une recherche jusque la pas de problème
mais avant j'ai une autre fonction, dans une autre classe, qui effectue le listage d'un dossier spécifier en paramètre par un string. Ensuite je traite la cherche
puis je exploite dans une nouvelle classe.

tu va me dire pourquoi autant de classe?

si je crée un nouveau programme avec juste une des fonction que j'ai déjà développer, j'ai juste a intégré ma classe (un fichier quoi!) dans mon programme.
Voila

en ce qui concerne ta première remarque soit :
" ouais mais la c'est pousse a l'extrême ... autant faire du C"
- soit tu est hors sujet (je ne pense pas quand même)
- soit on ne c'est pas très bien compris.

donc je vais ressayer :

pour les méthodes je suis d'accord avec toi tu peux en avoir autant que tu veux dans une classe au lieu d'un seule de 6000 lignes
mais si moi, je parle pour moi, je répartis mes fonctions, ou méthodes c'est du pareil au même, c'est dans le but d'avoir une structure plus claire. ou si tu préfère, je sépare les fonctions qui ne touche pas au même objectif

exemple :

deux fonctions "lire" et "écrire" qui permettent de lire et écrire dans un fichier seront dans la même classe
alors que deux fonction "lireDansUnFichier" et "rechercherUnFichier" qui l'une lie dans un fichier, et l'autre recherche un fichier (je sais je suis redondant) je ne les mettrai pas dans la même classe.

Tu comprend ce que je veux dire? (je ne dit pas que tu es bête je te rassure, je veux juste m'assurer que je suis clair).

Sinon je suis d'accord avec toi mon code est incomplet mais de la a dire qu'il est, je cite, "pas super utile" ... merci bien ...
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 13:51
ouais mais la c'est pousse a l'extreme ... autant faire du C
L'objectif de l'OO c'est quand meme de regrouper des fonctionnalitee inherente a une certaine structure de donnee ...
Tu peux, pour moi, avoir autant de methodes que tu veux dans une classe au lieu d'un seule de 6000 lignes

sinon quand tu dis que je fais tout avec l'exemple que j'ai mis plus haut je suis pas d'accord je fais rien de plus si ce n'est chercher dans les sous-repertoires
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 13:08
tous simplement parce que je préféré faire 10 classes qui font chacune une fonction que une classe qui fais 10 fonction

au final c'est pareil
mais pour la compréhension et la lecture voir la correction/modification c'est bien plus utile d'avoir 1 fonction par classe. Ou 2 a la limite
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 13:02
ben a la limite tu ferais une recherche d'un motif sur les noms de fichier d'une arborescence je dirais pourquoi pas ...
mais la tu ne recherche que dans un tableau de fichiers passe en param ... je trouve pas ca super utile

genre un searchFile(File root, String pattern)
{
File []files = root.listFiles();
for (File f : files)
{
if (f.isDirectory())
searchFile(f, pattern);
else if (f.getName().match(pattern))
//....
}
}
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 12:57
j'ai pas compris la première partie de ta remarque!!
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 12:51
ouais puis meme pas recursif ... enfin en soit pas super utile quoi
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 12:49
Bonjour,
Tu a raison pour la booléen trouve

En ce qui concerne le File[] j'ai fais comme ça car derrière cette classe j'ai effectuer une autre classe qui a pour but de lister tous les fichiers qui ce trouve dans un répertoire donc voila
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 11:52
Slt,
Ta source est pas mal mais quelques remarques :

- pourquoi déclarer un File[] pour la liste des fichiers temporaires
# File[] listeDesFichiersTempo = new File[fichiers.length];
# listeDesFichiersTempo[nbreTrouve] = fichiers[i];

tu aurais pu mettre un tableau de int contenant les positions des fichiers trouvés dans le tableau
int [] posFichiersTrouves = new int[fichiers.length]
posFichiersTrouves [nbreTrouve] = i;

et après dans ta boucle
# listeDesFichiers[i] = listeDesFichiersTempo[i];

listeDesFichiers[i] = fichiers[posFichiersTrouves[i]];

comme ca si tu as en entrée un tableau de 2000 fichiers tu ne recréé pas un tableau temporaire de 2000 File mais de 2000 int,

- A quoi te sert la variable trouve???
# boolean trouve = false;

a la fin de ta fonction au lieu de mettre
# if (trouve) {
tu aurais du mettre
if (nbreTrouve != 0)
Rejoignez-nous