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 ?
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 ?
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.
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+).
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 ?Envoyé par fucce
on dirait que tu te mélanger, ouvrir un fichier avec fopen et r+ c'est pas QUE pour lire :Envoyé par Oprichnik
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.'r+' : Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
ca te permet de faire l'équivalent de la suppression du fichier PUIS l'ouverture en r+ en une seule instruction!'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.
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!Envoyé par Oprichnik
1/ donnes ce que tu as vu
2/ donnes ce que tu penserais utile a la place
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 !Envoyé par Oprichnik
Je dirai que avec w+ tu vas pouvoir utiliser fseek pour retourner en arrière et lire ce que t'as écrit peut etre ?
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $file = file("fichier.txt"); unlink("fichier.txt");
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
Partager