FAQ
Saludos a todos, soy nuevo en la lista y estoy desarrollando una
aplicación web que lee el contenido de un archivo (el que viene tras
una marca concreta) y escribe en el mismo.

No hay problema al reemplazar el texto si el nuevo es de menor o igual
longitud que el antiguo, pero si el nuevo es más largo se come el
texto siguiente (uso fwrite, y fputs es identica...). ¿Hay alguna
función para escribir en un archivo sin sobreescribir?

Gracias

Jordi

Search Discussions

  • David at Apr 25, 2005 at 11:59 am
    Tu 'problema' esta en en fopen:
    http://es2.php.net/manual/es/function.fopen.php

    Tendras q cambier el modo en q abres el archivo, seguramente a 'a:
    Apertura para sólo escritura; ubica el apuntador de archivo al final del
    mismo. Si el archivo no existe, intenta crearlo.'

    Si quieres escribir al principio del archivo, lo q puedes hacer es
    abrirlo para lectura(r), leerlo en una variable con 'file_get_contents',
    cerrarlo, abrirlo para escritura (w), escribir lo q quieras y escribir
    lo q habia y esta en la variable.

    Jordi Domingo escribió:
    Saludos a todos, soy nuevo en la lista y estoy desarrollando una
    aplicación web que lee el contenido de un archivo (el que viene tras
    una marca concreta) y escribe en el mismo.

    No hay problema al reemplazar el texto si el nuevo es de menor o igual
    longitud que el antiguo, pero si el nuevo es más largo se come el
    texto siguiente (uso fwrite, y fputs es identica...). ¿Hay alguna
    función para escribir en un archivo sin sobreescribir?

    Gracias

    Jordi
    --
    ---------------------------------------------------
    David Asensio Ortega (david@sabioss.es)

    Sabioss Trade S.L.
    Santiago 24, 2º Izq.
    47001 Valladolid
    (España)
    ---------------------------------------------------
  • Jordi Domingo at Apr 26, 2005 at 6:36 am
    Gracias, como tenía que acceder a medio archivo, en un punto
    determinado, he hecho algo similar: fopen w para sobrrescribir al
    primera parte del fichero, y fopen a para añadir el nuevo texto y la
    segunda parte del fichero antiguo. Lástima que cuando abres con a no
    puedas volver atrás, sino sería más fácil, pero funciona.

    Aún así, debo garantizar el acceso de varios usuarios: yo pensaba usar
    flock como indica el manual, pero ahora debo acceder dos veces, asi
    que (de memoria, no tengo el código delante)

    fopen w
    flock lock_ex
    fwrite 'primera parte'
    flock lock_un
    fclose

    fopen a
    flock lock_ex
    fwrite 'nuevo'
    fwrite 'segunda parte'
    flock lock_un
    fclose

    Es decir, que bloqueo para que nadie modifique nada aparte de este
    proceso, pero podría acceder alguien entre el primer fclose y el
    primer fopen. Y no creo que tenga sentido hacer un solo lock_ex y un
    solo lock_un, porque son para cada fopen, no?

    Quizá poniendo una cadena en el archivo especialmente rara en el
    primer fopen/fclose, quitarla en el segundo, y no dejar acceder si la
    encuentra porque está editando?

    Gracias

    Jordi
    On 4/25/05, David wrote:
    Tu 'problema' esta en en fopen:
    http://es2.php.net/manual/es/function.fopen.php

    Tendras q cambier el modo en q abres el archivo, seguramente a 'a:
    Apertura para sólo escritura; ubica el apuntador de archivo al final del
    mismo. Si el archivo no existe, intenta crearlo.'

    Si quieres escribir al principio del archivo, lo q puedes hacer es
    abrirlo para lectura(r), leerlo en una variable con 'file_get_contents',
    cerrarlo, abrirlo para escritura (w), escribir lo q quieras y escribir
    lo q habia y esta en la variable.

    Jordi Domingo escribió:
    Saludos a todos, soy nuevo en la lista y estoy desarrollando una
    aplicación web que lee el contenido de un archivo (el que viene tras
    una marca concreta) y escribe en el mismo.

    No hay problema al reemplazar el texto si el nuevo es de menor o igual
    longitud que el antiguo, pero si el nuevo es más largo se come el
    texto siguiente (uso fwrite, y fputs es identica...). ¿Hay alguna
    función para escribir en un archivo sin sobreescribir?

    Gracias

    Jordi
    --
    ---------------------------------------------------
    David Asensio Ortega (david@sabioss.es)

    Sabioss Trade S.L.
    Santiago 24, 2º Izq.
    47001 Valladolid
    (España)
    ---------------------------------------------------

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedApr 24, '05 at 7:20p
activeApr 26, '05 at 6:36a
posts3
users2
websitephp.net

2 users in discussion

Jordi Domingo: 2 posts David: 1 post

People

Translate

site design / logo © 2022 Grokbase