Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/10/2007, 04:58
Avatar de DooBie
DooBie
 
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Re: Leer ultima linea de un archivo

Cita:
Iniciado por franco190453 Ver Mensaje
DooBie:
Hay varios puntos interesantes:
1.- Si abres un fichero que ya contiene texto entonces lo que tu dices
es cierto. Pero si este archivo va a estar abriendose y cerrandose, agregandole y quitandole o eliminandolo y haciendo uno nuevo; lo que te expongo a continuacion es necesario saber:
2.- Si tu abres un archivo con "fopen" modalidad "a" y este fichero NO
tiene texto (Fichero = 0Kb)en ese momento, La Apertura fallara; en otras palabras
primero tienes que abrirlo con la modalidad "w", agregarle algo y despues "a".
3.- Dado lo del punto numero 2, el codigo debe llevar la apertura que
solo se usara una vez y la modalidad "a" que se utilizara siempre.
FINAL: Lo que se hace al crear el fichero es, agregarle una linea en blanco con <enter> y cerrarlo; entonces el fichero contendra 1Kb. Y la funcion
"fopen" en su modalidad "a" para agregar al fichero no tendra
problemas al abrirse, de la misma manera la funcion "file" funcionara
como lo he explicado desde una perspectiva profesional.
Por lo anterior considero que mi codigo sigue siendo valido ya que depende
el uso del fichero en cuestion.
Saludos
Y espero ayude.
Franco
Hola, antes de nada, decir que no pretendo contradecir a nadie, simplemente que cuando pasan cosas asi, pues me gusta corroborar lo que he posteado yo, y lo que han posteado los demas, en este caso tu, me explico:

He estado haciendo pruebas con file(), tal y como tu comentas, he probado con un fichero vacio y con otro fichero con algunas lineas escritas, el script, algo sencillo, es este:

Código:
<?php
	$vacio = "vacio.txt";
	$lleno = "lleno.txt";
	$v = file($vacio); $lv = count($v);	$ulv = $v[$lv - 1];
	$ll = file($lleno); $lll = count($ll); $ulll = $ll[$lll - 1];
?>
ultima linea del fichero vacio: <?php echo $ulv;?><br />
numero de lineas del fichero vacio: <?php echo $lv;?><br />
<hr />
ultima linea del fichero lleno: <?php echo $ulll;?><br />
numero de lineas del fichero lleno: <?php echo $lll;?><br />
Es facil de entender, pero explico mis resultados y conclusiones.
Al leer un fichero con file(), si éste esta vacio, no devolvera ningun error (al menos, a mi no me ha devuelto ninguno, tal vez devuelva un notice...), simplemente en el array lo llenara con 0 indices, con lo que, al mostrar la supuesta ultima linea, simplemente no mostrara nada. Esto siembre usando para coger la ultima linea un (count($array)-1). En cambio, en el fichero lleno, si devuelve la ultima linea, con la recogida de la ultima linea con el (count($array)-1), en cambio, si no le restamos el 1, no devolvera nada, ya que como dije en el otro post, no encuentra el indice especificado.
De todos modos, en el post inicial no se comenta nada de como se va a escribir en el fichero, con lo cual, no podemos profundizar mas :( tampoco nos dicen si el codigo le sirvio o no :(
pus nada mas, espero no crear polemica ni nada, pero es que cuando me encuentro algo asi, lo pruebo, por si estoy equivocado, ya que la funcion file() la suelo usar en algunas paginas en produccion.

Saludos y gracias