begin process at 2012 05 30 22:42:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Système

 > 

Autre

 > 

verifier l'existance d'un répertoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

verifier l'existance d'un répertoire

mercredi 24 janvier 2007 à 13:32:43 | verifier l'existance d'un répertoire

dacor

Bonjour,
comment pourrai-je verifier en C++ si un répertoire existe et si j'ai les droits en écriture sur ce dernier.

merci pour votre aide
mercredi 24 janvier 2007 à 13:44:19 | Re : verifier l'existance d'un répertoire

yoyo269

Membre Club
Réponse acceptée !
Salut !

Pour vérifier l'existance d'un dossier voilà une fonction :
/*================================= Existence ou non du dossier =================================*/
bool DossExist(char * Chemin)
{
    if((GetFileAttributes(Chemin) & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) return true;
    else return false;
}

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 24 janvier 2007 à 13:46:47 | Re : verifier l'existance d'un répertoire

yoyo269

Membre Club
Réponse acceptée !
Pardon, pour les droits d'écritures, c'est à peu près la même chose que l'autre fonction, sauf que tu dois te servir de FILE_ATTRIBUTE_READONLY qui te dit que le dossier est uniquement en lecture (donc pas en écriture ).

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 24 janvier 2007 à 13:59:48 | Re : verifier l'existance d'un répertoire

dacor

cool !!

merci YOYO

à plu'ch
mercredi 24 janvier 2007 à 14:23:43 | Re : verifier l'existance d'un répertoire

dacor

excuza
mais je n'ai pas trouvé la librairie que je dois utiliser #include<?>


mercredi 24 janvier 2007 à 14:25:36 | Re : verifier l'existance d'un répertoire

yoyo269

Membre Club
#include <windows.h>

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 24 janvier 2007 à 14:36:01 | Re : verifier l'existance d'un répertoire

dacor

euh...je suis sous linux
je vais chercher mais si t'as une piste je suis preneur


mercredi 24 janvier 2007 à 14:39:01 | Re : verifier l'existance d'un répertoire

yoyo269

Membre Club
LOL !
Ca va beaucoup moins bien marcher forcément !
Pense à le préciser la prochaine fois stp.
Là comme ça sous linux j'en ai aucune idée. Désolé.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 24 janvier 2007 à 22:01:37 | Re : verifier l'existance d'un répertoire

SAKingdom

Membre Club
Je crois que c'est fesable avec access.

J'ai testé ceci avec ceci:
if(!access("/projetC++/testfonction", R_OK)) printf("disponible pour lecture\n");
else printf("non disponible pour lecture\n");

Dans mon cas, /projetC++/testfonction existe bien et j'ai les droits de lecture dessus donc ça écrit bien "disponible". Si je modifie le path vers un rep inexistant, ça écrit bien "non disponible".

Documentation:

NOM
 access - Vérifier les permissions d'accès à un fichier.

SYNOPSIS
#include <unistd.h>

int access(const char *pathname, int mode);

DESCRIPTION
access vérifie si le processus serait autorisé à lire, écrire, exécuter, ou tester l'existence d'un fichier (ou d'un autre objet appartenant au système de fichiers), dont le nom est pathname.
Si pathname est un lien symbolique, ce sont les permissions du fichier pointé par celui-ci qui sont testées.
mode est un masque constitué d'un ou plusieurs arguments liés par un OU binaire ( | ) R_OK, W_OK, X_OK et F_OK.
Les requêtes R_OK, W_OK et X_OK servent respectivement à tester la lecture, l'écriture, et l'exécution du fichier. La requête F_OK teste si la vérification d'existence du fichier serait autorisée (ceci dépendant des permissions des répertoires apparaissant dans le chemin pathname et éventuellement des liens symboliques rencontrés sur ce chemin).
Le test est effectué avec les User-ID et Group-ID réels du processus, plutôt qu'avec les IDs effectifs qui sont utilisés lorsque l'on tente l'opération. Ceci permet aux programmes Set-UID de déterminer les autorisations de l'utilisateur ayant invoqué le programme.
Seuls les bits d'accès sont vérifiés, et non pas le contenu du fichier. Ainsi si l'écriture est autorisée dans un répertoire, ceci signifie que l'on peut créer des fichiers dans ce répertoire, et non pas que l'on puisse y écrire comme dans un fichier. Également, un fichier DOS peut être considéré comme exécutable, alors que l'appel système execve(2) échouera évidemment.
Si le processus a les privilèges suffisants, une implémentation peut indiquer un succès pour X_OK même si le fichier n'a aucun bit d'exécution positionné.

VALEUR RENVOYÉE
access renvoie 0 s'il réussit (toutes les requêtes sont autorisées), ou -1 s'il échoue (au moins une requête est interdite), auquel cas errno contient le code d'erreur.

ERREURS
EACCES
L'accès serait refusé au fichier lui-même, ou il n'est pas permis de parcourir l'un des répertoires de pathname.
EROFS
On demande une écriture sur un système de fichiers en lecture-seule.
EFAULT
pathname pointe en dehors de l'espace d'adressage accessible.
EINVAL
mode était mal spécifié.
ENAMETOOLONG
pathname est trop long.
ENOENT
Un répertoire contenu dans le pathname aurait été accessible mais n'existe pas, ou est un lien symbolique pointant dans le vide.
ENOTDIR
Un élément contenu dans le chemin pathname n'est pas un répertoire.
ENOMEM
Pas assez de mémoire pour le noyau.
ELOOP
pathname contient une référence circulaire (à travers un lien symbolique).
EIO
erreur générique d'entrée/sortie.

EXEMPLE
#include <stdio.h>
#include <unistd.h>

int main (void)
{
        char * nom_fichier = "/etc/passwd";
        if (access (nom_fichier, W_OK) == 0) {
                fprintf (stdout, "Écriture Ok !");
                if (getuid() != 0) { /* 0 <=> Super-User */
                        fprintf (stdout, "Danger !");
                }
        }
        return (0);
}

RESTRICTIONS
access renvoie une erreur si l'un quelconque des types d'accès est refusé, même si les autres sont acceptés.

 Il est possible qu'access ne fonctionne pas correctement sur un serveur NFS si les correspondances d'UID sont activées, car ces correspondances sont gérées par le serveur, et masquées au client qui effectue les vérifications d'autorisation.

 Utiliser access pour vérifier si un utilisateur a le droit, par exemple, d'ouvrir un fichier avant d'effectuer réellement l'ouverture, risque de créer un trou de sécurité. En effet, l'utilisateur peut exploiter le petit intervalle de temps entre la vérification et l'accès effectif pour modifier le fichier.

C++ (@++)



Cette discussion est classée dans : répertoire, existance, verifier


Répondre à ce message

Sujets en rapport avec ce message

Lister un répertoire [ par Niamor ] Bonjour,J'aurais besoin de savoir comment lister le contenu d'un répertoire( j'ai utilisé opendir et readdir, mais cela ne marche correctement avec DE Verifier la saisie [ par RobRoy ] comment faire pour empecher l'utilisateur de rentrer autre chose qu'un short lorsque que je lui impose un cin.ou sinon y a t il un moyen de tester la question pour logiciel sur jeux video [ par glash ] lut,J'ai créé une sorte de répertoire pour les serveurs de jeux et j'aimerai y mettre un fonction qui permettent de rejoindre le serveur rien qu'en ta supprimer tout les fichiers d'un répertoire [ par AoD ] je recherche une fonction qui permet de supprimer tout les fichiers d'un répertoire.merci de vite me répondre [Linux] ajout utilisateur et son répertoire : PAM ? [ par Vinsou ] Bonjour à tous,Je suis en train de faire une petite appli pour gérer la création de comptes pour un service d'hébergement web sur serveur mutualisé. E Supprimer un répertoire [ par Hundai ] Comment supprimer un répertoire et tout son contenu ??? (même s'il contient d'autres répertoires).Merci Microsoft Common Dialog [ par tweet ] Salut, voilà, j'ai un problème : en fait, en utilisant les MCD ( CFileDialog ) cela change le répertoire courant de mon programme. Je voudrais savoir ChDir - au retour du programme: sur ancien répertoire [ par jean78 ] Avec Microsoft C++, en mode Win console (lancement de porgramme en fenêtre DOS), lorsque j'exécute la fonction ChDir pour changer de répertoire, la fo lister fichier dans un répertoire [ par mutintin ] Je cherche un fonction en C qui pourrait, en donnant le chemin d'un dossier, me retourner un tableau avec les noms de l'ensemble des fichiers avec leu Selecteur de répertoire [ par PeteBull ] J'aurais besoin d'un petit coup de main pour permettre a un utilisateur de sélectionner un répertoire par l'intermédiaire d'une boite de bialogue.On n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales