Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2007, 19h44   #1
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à Oprichnik
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 ?
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 09h15   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

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

Citation:
  • '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.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 09h16   #3
Membre éclairé
 
Inscription : septembre 2006
Messages : 459
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : septembre 2006
Messages : 459
Points : 375
Points : 375
Envoyer un message via MSN à fucce
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+).
fucce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 11h38   #4
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à Oprichnik
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 ?
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 11h44   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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 :
Citation:
'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.

Citation:
'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!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 12h06   #6
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à 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 +.
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 12h09   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 12h24   #8
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à 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+"); ?
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 12h29   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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 ?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 12h50   #10
Membre régulier
 
Homme Mallory
Étudiant
Inscription : septembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Mallory
Âge : 22
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2006
Messages : 213
Points : 75
Points : 75
Envoyer un message via MSN à Oprichnik Envoyer un message via Skype™ à Oprichnik
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 :
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 :
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
Oprichnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h10.


 
 
 
 
Partenaires

Hébergement Web