recherche fichier langage c

Le
johnatemps
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais ;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous pourrez
me donner.
Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Claude BELLAMY
Le #9740701
"johnatemps" news:g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")





1) En ce qui concerne la recherche à partir d'une partie du nom
de fichier, c'est inclus dans les fonctions "FindFirstFile" et
"FindFirstFileEx" :
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa364419(VS.85).aspx
et plus spécialement le paramètre lpFileName, qui peut contenir des
caractères génériques ("*" et "?")

2) En ce qui concerne l'exploration dans les sous-répertoires,
tout est dit, puisqu'il suffit de procéder à une énumération
récursive des répertoires, toujours avec FindFirstFile ou
FindFirstFileEx
Et pour chaque sous-répertoire trouvé, on effectue une recherche
du fichier.



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Christian ASTOR
Le #9740691
On 2 juin, 13:56, "johnatemps"
 Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")

J'espère que vous m'avez compris et sinon dite le moi je ré expliquera is ;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous pou rrez
me donner.



FindFirstFile()-FindNextFile()-FindClose() en récursif.

Ex (Unicode) =>

DWORD FindFileRecurse(TCHAR *pwszDir, TCHAR *pwszFile)
{
DWORD dwError = ERROR_SUCCESS;
WIN32_FIND_DATA fd;
HANDLE hFile;
TCHAR szPath[MAX_PATH];

lstrcpy (szPath, pwszDir);
lstrcat (szPath, TEXT("\*.*"));

hFile = FindFirstFile(szPath, &fd);

if (hFile == INVALID_HANDLE_VALUE)
{
dwError = GetLastError();
return dwError;
}

do
{
if (!lstrcmp(fd.cFileName, L".") || !lstrcmp(fd.cFileName,
L".."))
continue;

lstrcpy (szPath, pwszDir);
lstrcat (szPath, TEXT("\"));
lstrcat (szPath, fd.cFileName);

if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
continue;

dwError = FindFileRecurse(szPath, pwszFile);
if (dwError != ERROR_SUCCESS)
{
FindClose(hFile);
return dwError;
}
}
else
{
if (wcsstr(szPath, pwszFile) != NULL)
{
fwprintf(stdout, L"%sn", szPath);
}
}

} while (FindNextFile(hFile, &fd));

FindClose(hFile);

return dwError;
}
johnatemps
Le #9740671
Ha !!! Merci bcp pour vos reponse tres rapide et surtout tres constructive
contrairement a certain endroit ou j'ai demandé !
Donc je me lance dans la programmation et je vous tiens au courant
bonne journée a tous


"johnatemps" g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais
;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous
pourrez me donner.
Merci d'avance




johnatemps
Le #9740661
Par contre etant debutant dans la programmation j'ai bcp de mal a
comprendre le programme de christian ASTOR
d'ailleur j'ai presque du mal a reconaitre le langage C :/.
En tous cas merci de l'avoir poster quand meme ca peu me servire

"johnatemps" g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais
;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous
pourrez me donner.
Merci d'avance




Doms
Le #9740651
Bonjour,

"johnatemps"
Par contre etant debutant dans la programmation j'ai bcp de mal a comprendre le programme de christian ASTOR
d'ailleur j'ai presque du mal a reconaitre le langage C :/.
En tous cas merci de l'avoir poster quand meme ca peu me servire



C'est du utilisant l'API Windows et donc les type qui vont avec.
Déroutant au début mais on s'y fait (genre BOOL au lieu de bool
- qui n'existe qu'en c++ d'ailleurs je crois -).

Hormis cela, c'est du C.

Doms.
Publicité
Poster une réponse
Anonyme