CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Vérifier l'existence d'un repertoire ?

[Draks]
[Draks]
Niveau 5
01 juin 2006 à 09:09:05

Bonjours a tous !
J´ai encore ne question a vous poser, une question a laquelle bien evidement je ne trouve pas de reponses malgré le fait d´voir chercher j´vous assure ;- )

Voila ca parait simple mais je n´y arrive pas :
Je cherche a verifier l´existence d´un repertoire en C++ (PS : J´utilise Visual C++ 6.0 )

Pour crée mon repertoire je n´ai pas trouvé d´autre moyen que de faire ==>
system ("mkdir c:\\Temp\\FTPSENT\\DATASAVE"); // C
réation du répertoire de travail.

Maintenant je chercherai a verifier l´existence de ce repertoire avant de le créer comme ca si il existe deja je le supprime.

Voila merci d´avance a tous ;- )

dnob700
dnob700
Niveau 10
01 juin 2006 à 20:04:05

tu peut utiliser la fonction CreateDirectory pour créer un dossier, et cette fonction renvoie une erreur si le dossier existe déjà.

Mais pour créer des fichier temporaire, tu peut utiliser des fonctions du genre : GetTempFileName qui te renvoie un nom de fichier dont tu es sur que tu peut l´utiliser comme fichier temporaire.

Pour plus d´information sur ces fonctions, regarde la MSDN.

[Draks]
[Draks]
Niveau 5
02 juin 2006 à 09:06:01

Merci bien j´vais essayer avec CreateDirectory ;- )

m-2
m-2
Niveau 10
28 novembre 2006 à 03:54:56

je remonte ce topic pour poser la même question, à l´exception près que je veux seulement validé le répertoire entré par l´utilisateur pour un usage ultérieur, donc s´il y aurait une fonction du style CheckPathExist, ça serait bien!!

darth-bane
darth-bane
Niveau 10
28 novembre 2006 à 05:18:06

2 méthodes que j´utilisais en Pascal il y´a longtemps (mais les méthodes sont valables quels que soient les langages) :
- j´essaye de lister (je ne me souviens plus du nom des fonctions) les fichier qui se trouvent dans le dossier que je veux tester, si j´ai une erreur en retour, le dossier n´existe pas sinon, ... tu l´auras compris, il existe.
- j´essaye de créer le dossier. Si j´obtiens une erreur, le dossier existe déjà, sinon il existe et selon ce que tu veux faire derrière, soit tu le supprime car tu n´en as pas besoin, soit tu le conserve.
:ok:

darth-bane
darth-bane
Niveau 10
28 novembre 2006 à 05:21:14

Ah, si !
En Pascal il existait une fonction pour vérifier l´existence d´un fichier : FileExist
et il me semble que ça fonctionnait aussi pour les dossier, ce qui semble logique, vu qu´un dossier est en fait un fichier de type particulier.

m-2
m-2
Niveau 10
29 novembre 2006 à 01:07:50

mon programme est en C et j´utilise la fonction system pour faire des commandes sous ms-dos

j´avais penser faire un system("IF EXIST...") car dans le CRTr il me dise que system() renvoie la valeur qui est retourné par l´invite de commande, le problème, c´est qu´il dise pas du tout comment récupérer cette valeur, d´autant plus que je ne veux effectuer aucun traitement (sauf un message d´erreur) je veux juste savoir s´il existe!

darth-bane
darth-bane
Niveau 10
29 novembre 2006 à 01:31:50

Tu sais qu´en C (comme en Pascal d´aileurs), il existe des fonctions de création/modification de dossier ou fichiers bien plus pratique que d´utiliser la fonction system() :questions:
Ta méthode est lourde et surement bien plus lente car les fonctions C utilisent les interruptions BIOS au lieu de passer par les couches d´abstraction du DOS (en gros il n´y a pas d´intermédiaires).

m-2
m-2
Niveau 10
29 novembre 2006 à 02:27:27

je suis bien d´accord, mais la commande system permet de renommer, copier, déplacer, supprimer, ..., des fichiers et dossiers assez simplement, sans trop de code.. mon but étant de me créer un petit utilitaire dont je vais me servir une fois de temps à autre.. donc la simplicité du programme est bien plus prioritaire pour moi que la rapidité!

darth-bane
darth-bane
Niveau 10
29 novembre 2006 à 03:40:21

Mais ces fonctions existent en C et sont assez simple à utiliser !

m-2
m-2
Niveau 10
29 novembre 2006 à 13:17:38

laisse tomber...

dnob700
dnob700
Niveau 10
29 novembre 2006 à 13:46:52

ben tu pose une question. On te propose des méthodes pour résoudre ton problème. Méthodes qui ont l´avantage d´être simple à utiliser et/ou rapide et/ou portable.

Tu préfère ne pas changer, pas de problème, mais si ce que tu fait est mieux _a priori_, alors pas besoin de poser une question.

darth-bane
darth-bane
Niveau 10
29 novembre 2006 à 15:25:14

+1 :ok:

m-2
m-2
Niveau 10
29 novembre 2006 à 18:00:30

ma question est dans le titre du topic, la validité de mon code n´est pas du tout en cause..

en faite, mon code n´as absolument rien a voir avec le fait de vérifier ou non l´existance d´un répertoire :

cout << "répertoire: ";
getline(cin, répertoire);

je veux validé la réponse, on s´en fou du reste du code!

godrik
godrik
Niveau 30
29 novembre 2006 à 18:11:43

"je ne veux effectuer aucun traitement (sauf un message d´erreur) je veux juste savoir s´il existe!"

if (existsDir(...)) {} else {}

chercher l´erreur...

m-2
m-2
Niveau 10
29 novembre 2006 à 18:16:56

l´erreur c´est que la fonction existsdir existe pas... donc ca règle toujours que dalle!

darth-bane
darth-bane
Niveau 10
29 novembre 2006 à 18:46:50

Ta fonction system() ne te permettras pas de récupérer de code d´erreur, donc tu ne pourras pas vérifier si le déroulement de ta commande Dos s´est bien passé.
Nous t´avons expliqué comment travailler, je t´ai donné 2 méthodes à toi de voir, mais ne compte pas sur nous pour t´aider à bidouiller (car c´est le mot juste) une méthode bancale avec ta fonction system() !

godrik
godrik
Niveau 30
29 novembre 2006 à 18:48:03

Fonction CreateFile sous windows.
Tu peux aussi t´en sortir avec findfirstfile et findnextfile.

m-2
m-2
Niveau 10
29 novembre 2006 à 18:57:10

c´est tout de meme bizarre qu´il n´y a pas de fonction pour valider un répertoire directement, être obliger d´en créer un puis de le supprimer ensuite est légèrement chiant!

la fonction suivante, aussi simple soit-elle, prend tout les fichiers d´un répertoire (et de ses sous-répertoire) pour les copier vers la cible.. je vois mal comment on peut faire plus simple (j´ai pas dis plus efficace, mais plus simple!):

for (int i= 0; i != fichier.size(); ++i)
{
string commande= "MOVE \"" + fichier[i].répertoire + "\\"
fichier[i].nom + "\" " + destination;

system(commande.c_str())
}

bref.. je croyais pouvoir valider simplement, sans trop me creuser la tête, mais il semble que je vais devoir le faire quand meme!

darth-bane
darth-bane
Niveau 10
29 novembre 2006 à 19:21:48

"c´est tout de meme bizarre qu´il n´y a pas de fonction pour valider un répertoire directement, être obliger d´en créer un puis de le supprimer ensuite est légèrement chiant!"

Tout d´abord, qu´entends tu par "valider un répertoire" ?

Et d´après toi, comment l´OS fait-il pour exécuter ta fonction MOVE ?
Il essaye d´accéder au dossier, s´il n´existe pas, il le crée et y déplace les fichiers, s´il existe il y déplace directement les fichiers.
Même chose s´il y´a des sous dossiers à déplacer.

La programmation, ce ne sont pas 3 mots ou 2 clics, c´est se creuser la cervelle.
Ne pas trop se crever la tête, ça ne donne que de la bidouille !

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment