Saludos..
Existe alguna forma de leer la ultima linea de un archivo plano sin utilizar fopen?
Gracias!
| ||||
Re: Leer ultima linea de un archivo Cita: Facil :pCódigo PHP: Para mas informacion: http://es.php.net/manual/es/function.file.php |
| |||
Re: Leer ultima linea de un archivo Nano: Lo que te ha expuesto Doobie es excelente, aqui te complemento: <?php $fichero = "mi_fichero.txt"; $filas = file($fichero); $ultima_linea = count($filas); $ultima_linea_escritura = $filas[$ultima_linea]; echo "Aqui esta:<br>"; echo "$ultima_linea_escritura"; ?> Saludos Y espero te ayude Franco ![]() ![]() ![]() |
| ||||
Re: Leer ultima linea de un archivo Cita: Yo creo que en el count($filas) se deberia restar 1 para que realmente te de la ultima fila, y no un error de fuera de indice, ya que count() te devuelve el numero de indices de un array, con lo que si tiene 20 indices, te devolvera 20, pero si luego hacemos referencia a ese indice, no existira, ya que en el array se empieza a contar desde 0, con lo que el ultimo, seria el indice 19.
Iniciado por franco190453 ![]() Nano: Lo que te ha expuesto Doobie es excelente, aqui te complemento: <?php $fichero = "mi_fichero.txt"; $filas = file($fichero); $ultima_linea = count($filas); $ultima_linea_escritura = $filas[$ultima_linea]; echo "Aqui esta:<br>"; echo "$ultima_linea_escritura"; ?> Saludos Y espero te ayude Franco ![]() ![]() ![]() saludos, y muy completo el ejemplo :) esperemos que le sirva la ayuda ![]() |
| |||
Re: Leer ultima linea de un archivo 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 ![]() ![]() ![]() ![]() |
| ||||
Re: Leer ultima linea de un archivo Cita: 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:
Iniciado por franco190453 ![]() 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 ![]() ![]() ![]() ![]() 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:
Es facil de entender, pero explico mis resultados y conclusiones.<?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 /> 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 ![]() |
| |||
Re: Leer ultima linea de un archivo DooBie: En ningun momento dije que la funcion "file" da error cuando el archivo no tiene texto!. Y la funcion "file" NO es igual a la funcion "fopen". Esta ultima SI devuelve error cuando el archivo no tiene texto dentro o tiene 0Kb. LO IMPORTANTE DE TODO ESTO ES QUE EL MANEJO DE UN ARCHIVO DE TEXTO DENTRO DE UN SCRIPT PHP, GENERALMENTE REQUERIRA DE LA ADICION DE TEXTOS Y EN ESE CASO SE USA LA FUNCION "FOPEN", YA QUE CON ESTA SE PUEDE AGREGAR TEXTO A UN ARCHIVO YA EXISTENTE. Porfavor, lee con calma lo que he escrito al menos unas dos veces ya que la ansiedad turba la mente, especialmente lee el punto #2 de mi post. Saludos Y espero ayude Franco ![]() ![]() ![]() ![]() P.S. DooBie, las polemicas, engrandecen los conocimientos!. |
| ||||
Re: Leer ultima linea de un archivo Cita: tienes razon, hay que re-leer :p
Iniciado por franco190453 ![]() DooBie: En ningun momento dije que la funcion "file" da error cuando el archivo no tiene texto!. Y la funcion "file" NO es igual a la funcion "fopen". Esta ultima SI devuelve error cuando el archivo no tiene texto dentro o tiene 0Kb. LO IMPORTANTE DE TODO ESTO ES QUE EL MANEJO DE UN ARCHIVO DE TEXTO DENTRO DE UN SCRIPT PHP, GENERALMENTE REQUERIRA DE LA ADICION DE TEXTOS Y EN ESE CASO SE USA LA FUNCION "FOPEN", YA QUE CON ESTA SE PUEDE AGREGAR TEXTO A UN ARCHIVO YA EXISTENTE. Porfavor, lee con calma lo que he escrito al menos unas dos veces ya que la ansiedad turba la mente, especialmente lee el punto #2 de mi post. Saludos Y espero ayude Franco ![]() ![]() ![]() ![]() P.S. DooBie, las polemicas, engrandecen los conocimientos!. en cualquier caso, a mi me gustaria saber si hemos ayudado en algo al compañero, ya que no dice nada :D ![]() V'sss .... digo... saludos! ![]() |
| ||||
Re: Leer ultima linea de un archivo Como tip para todos, el usar file, carga todo el archivo en memoria, asi que es ineficiente si los archivos son grandes (imaginen un archivo de 20 MB). Les comparto esta funcion que usa fopen/fseek/fget para regresar la ultima linea del archivo, es bastante rapida y no importa el tamaño del archivo: Código PHP: |
| |||
Re: Leer ultima linea de un archivo GatorV: Definitivamente la funcion file NO es muy practica Y muy interesante y bastante enriquecedor es para mi tu post, ya que la verdad nunca terminamos de aprender. Saludos Y Gracias a ti GatorV. Y Gracias a DooBie, por permitir profundizar un poco mas sobre este novedoso lenguaje de programacion php. Franco ![]() ![]() ![]() ![]() ![]() P.S. DooBie, verdaderamente el que inicio este post debiera al menos comentar algo!. |
| ||||
Re: Leer ultima linea de un archivo GatorV tienes razon en el problema de un supuesto tamaño escesivo de fichero para usar la funcion file, eso es un problema a tener en cuenta. Una funcion util y eficaz la que has puesta, gracias. franco190453, seguro que para mi es mas novedoso este lenguaje :p saludos! |
| ||||
Re: Leer ultima linea de un archivo GRacias a todos por su respuesta... e intentado implementar la funcion que gastorv muy amablemente compartio, pero no la e podido acomodar para mi proposito... BAsicamente lo que necesito es ubicarme en la la antepenultima o ultima linea de archivo plano y verificar si tiene escrito Proceso Ejecutado. Agradezco a la(s) persona(s) que me puedan brindar una idea para ello sin utilizar la funcion file... Hasta Pronto!
__________________ :.:Nano.:: @nano_hard - Retornando al foro |