IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pourquoi utiliser fopen("fichier",w+) alors que le fichier est remis à zéro ?


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut Pourquoi utiliser fopen("fichier",w+) alors que le fichier est remis à zéro ?
    Bonjour, ma question est donc :

    Pourquoi utiliser fopen("fichier",w+) alors que le fichier est remis à zéro ?

    Il n'y a donc rien à lire..

    Je me trompe ?

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Qui t'as dit qu'il fallait utiliser forcément w+ ?

    • 'r' : Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
    • 'r+' : Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
    • 'w' : Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    • 'w+' : Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    • 'a' : Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
    • 'a+' : Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
    • 'x' : Crée et ouvre le fichier en lecture seule ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux.
    • 'x+' : Crée et ouvre le fichier en lecture et écriture ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2, et fonctionne uniquement avec des fichiers locaux.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    On ouvre un fichier pour lire, certes, mais aussi pour écrire!! C'est plus pratique d'utiliser fopen("fichier",w+) plutôt que faire un unlink du fichier en question puis un fopen("fichier",r+).

  4. #4
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Je connait les autres méthodes d'ouverture de fopen mais je me demande pourquoi existe t-il w+.

    Citation Envoyé par fucce
    plutôt que faire un unlink du fichier en question puis un fopen("fichier",r+).
    Mais si le fichier est supprimer juste avant, il n'y a rien à lire dedans.. donc faire un un fopen("fichier",r+) est inutile non ?

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Oprichnik
    Je connait les autres méthodes d'ouverture de fopen mais je me demande pourquoi existe t-il w+.

    Mais si le fichier est supprimer juste avant, il n'y a rien à lire dedans.. donc faire un un fopen("fichier",r+) est inutile non ?
    on dirait que tu te mélanger, ouvrir un fichier avec fopen et r+ c'est pas QUE pour lire :
    'r+' : Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
    donc si tu veux faire ca pour écrire dans un fichier depuis le début, tu es obligé de l'avoir d'abord supprimé s'il existait.

    'w+' : Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    ca te permet de faire l'équivalent de la suppression du fichier PUIS l'ouverture en r+ en une seule instruction!

  6. #6
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Ok mais alors on utilise w qui supprime le fichier et permet de réécrire dedans sans l'inutilité de la lecture avec le +.

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Oprichnik
    Ok mais alors on utilise w qui supprime le fichier et permet de réécrire dedans sans l'inutilité de la lecture avec le +.
    JE comprends pas ta phrase la!

    1/ donnes ce que tu as vu
    2/ donnes ce que tu penserais utile a la place

  8. #8
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Bon puisqu'en utiisant w ou w+ le fichier est de toute façon supprimé.

    Pourquoi utilisé w+ au lieu de w puisqu'il n'y a rien à lire après fopen("fichier.txt","w+"); ?

  9. #9
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Oprichnik
    Bon puisqu'en utiisant w ou w+ le fichier est de toute façon supprimé.

    Pourquoi utilisé w+ au lieu de w puisqu'il n'y a rien à lire après fopen("fichier.txt","w+"); ?
    Ah voila, je comprends mieux !
    Je dirai que avec w+ tu vas pouvoir utiliser fseek pour retourner en arrière et lire ce que t'as écrit peut etre ?

  10. #10
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Ah, ok je pige...

    Enfait si je demande cela c'est parce que j'aimerais verrouiller un fichier mais en l'ouvrant avec comme paramètre w.

    Et j'espérais peut-être que w+ supprimait le fichier mais retournait quand même son contenu. un peu comme si on fesait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $file = file("fichier.txt");
    unlink("fichier.txt");
    Y a t-il une méthode qui après avoir ouvert le fichier supprime son contenu dans le but de pouvoir appliquer le verrou sans supprimer le fichier avant.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $handle = fopen("fichier.txt","a");
    flock($handle,LOCK_EX);
    fsupprimer_tampon($handle);
    // Et puis on écrit le fichier qui ne contient plus rien

Discussions similaires

  1. Fichier introuvable mdw alors que le chemin est correct
    Par laurent.w dans le forum Sécurité
    Réponses: 2
    Dernier message: 01/02/2007, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo