begin process at 2012 05 30 13:25:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

test d'existence d'un fichier


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

test d'existence d'un fichier

mercredi 24 janvier 2007 à 16:18:41 | test d'existence d'un fichier

morad_smi

bonjour tout le monde
pouvez vous me dire si quelqu'un sait comment on teste si un fichier existe en C
merci d'avance
mercredi 24 janvier 2007 à 19:33:31 | Re : test d'existence d'un fichier

BruNews

Administrateur CodeS-SourceS
_access()
à vérifier.

ciao...
BruNews, MVP VC++
mercredi 24 janvier 2007 à 20:01:35 | Re : test d'existence d'un fichier

pepsidrinker

using namespace System;
usingnamespace System::IO;

File::Exist("C:\\bob.txt");


-----
Sinon, essais avec fstream.
fstream f;
f.open("C:\\bob.txt");
la fonction retournera kkchose de spécial si la fichier n'existe pas...


Pepsidrinker
mercredi 24 janvier 2007 à 21:42:47 | Re : test d'existence d'un fichier

SAKingdom

Membre Club
C'est bien access (pas de _)

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++ (@++)

mercredi 24 janvier 2007 à 22:32:24 | Re : test d'existence d'un fichier

goast_tu

si non une maniére alternative mais pas rigoureuse c'est de tester la valeur de retour de la fonction fopen, Si c'est NULL alors probablement il n'existe po mais des fois ca renvoi NULL à cause de l'echec d'ouverture


Trafic web gratuit!!!


Cette discussion est classée dans : fichier, test, existence


Répondre à ce message

Sujets en rapport avec ce message

Existence fichier ? [ par ranouf ] comment peut on savoir si un fichier existe ? sachant que le fichier s'appelle test.ini Pb de copie de fichier/taille de structure [ par wannie ] Salut tt le monde. Quelqu'un pourrai tester mon prog est me dire si ça fonctionne. Moi je comprend pas j'ai une copie d'un caractère dans chaque ligne Initialisation tableau dans un Header ? [ par Capa6T ] Salut,J'ai fait un programme en C qui doit me générer un fichier header (genre test.h) que je pourrais insérer dans un autre projet en C.Ce Header doi test sur variable de type char [ par enrageur ] j'aimerais indetifier des mots dans un fichier txt. J'ouvre le fichier et je le copy dans un char (data). Ensuite je fais un test pour voir si les deu Comment compiler un fichier rc contenant une ressource RCDATA ? [ par skirby ] Bonjour à tous, J'aimerais savoir comment faire pour compiler un fichier rc avec Dev-cpp 4.9.9.2. J'ai utilisé ResEd comme éditeur de ressources. Voi Test d'existence d'un disque [ par MatiZ ] 'lutj'ai fait un programme qui doit créer des fichiers sur un disque qui est un montage d'un disque sur un autre ordi du réseau.Mais la lettre du mont Créer .h ? [ par CHKDSK2K ] Bonjour à tous je voudrais créer un fichier .h sous turboc mais j'utilise surement pas la bonne methode alors j'ai créer un fichier  ICI.H et ICI.C qu probleme d'ecriture dans un fichier [ par thmatew ] Bonjour,Comme dit dans le sujet: j'ai un probleme d'écriture dans un fichier.Je recoit le nom du fichier d'un client distant, le fichier se crée, mai Debutant : test NULL en C++ [ par Spacekiller ] Bonjour, voila je suis debutant et j'ai quelques problemes avec les fichiers.Lorsque je veux tester si un fichier n'existe ou pas j'ai toujour une err Packed DIB et BMP [ par Shadiest ] Je souhaite extraire une image d'un fichier AVI pour, par la suite, lui appliquer des transformations J'utilise donc la fonction "AVIStreamGetFrame"


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,718 sec (4)

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