Je voudrais modifier quelques octets à l'intérieur d'un fichier binaire. Le
problème, c'est que je dois faire cette opération sur un grand nombre de
fichiers (plusieurs milliers) et que chaque fichier fait plus de 10Mo. Avec
ma méthode actuelle (lecture du fichier en mémoire, modif des octets en
mémoire, réécriture du fichier), c'est très long car chaque fichier est lu
et réécrit en totalité.
Existe-t-il une possibilité pour ouvrir le fichier, déplacer le pointeur,
écrire un octet et fermer le fichier ?
Un truc du genre :
- fopen()
- fseek()
- fwrite()
- fclose()
Tous les modes d'ouverture de fopen() sont soit en lecture seule, soit
tronque le fichier en taille 0, etc...
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'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.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
SK Lurk
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'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.
Je vais re-essayer avec r+, mais a+ ne fonctionne pas : http://fr2.php.net/manual/fr/function.fseek.php il est bien précisé que les données sont écrites à la fin du fichier, sans possibilité de déplacer le pointeur.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier
au début du fichier.
'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.
Je vais re-essayer avec r+, mais a+ ne fonctionne pas :
http://fr2.php.net/manual/fr/function.fseek.php
il est bien précisé que les données sont écrites à la fin du fichier, sans
possibilité de déplacer le pointeur.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'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.
Je vais re-essayer avec r+, mais a+ ne fonctionne pas : http://fr2.php.net/manual/fr/function.fseek.php il est bien précisé que les données sont écrites à la fin du fichier, sans possibilité de déplacer le pointeur.