Diferencia entre revisiones de «File.position()»
De ArduWiki
(Página creada con «== Descripción == Retorna la posición actual del "cursor" del archivo. Si retorna '''0''' significa que se encuentra al inicio; si retorna el mismo valor de File.size()...») |
(→Sintaxis) |
||
Línea 4: | Línea 4: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
+ | File archivo = SD.open("archivo.txt", FILE_WRITE); | ||
archivo.position(); | archivo.position(); | ||
</pre> | </pre> |
Revisión actual del 19:18 3 jul 2019
Contenido
Descripción
Retorna la posición actual del "cursor" del archivo. Si retorna 0 significa que se encuentra al inicio; si retorna el mismo valor de File.size() significa que se encuentra al final.
Sintaxis
File archivo = SD.open("archivo.txt", FILE_WRITE); archivo.position();
Parámetros
Nada.
Retorna
La posición actual en bytes del "cursor", o -1 si la instancia representa un directorio/carpeta o archivo sin abrir. (unsigned long).
Advertencias
- -1 en unsigned long equivale a 4294967295, lo cual puede resultar confuso si se está interactuando con un archivo cuyo tamaño alcanza el límite. En ese caso, se recomienda verificar directamente el tamaño y el estar abierto, con tal de salir de dicha confusión.
Comentarios
Se habla de un "cursor" posicionado en bytes porque la librería trata internamente los archivos como vectores/matrices de tipo byte, y con la posibilidad de crecer automáticamente según la necesidad.
Lo que hace esta función es retornar el índice (como el de un vector/matriz) actualmente en uso para la próxima lectura (File.read() o File.peek()) o escritura (File.write()/File.print()).
Ejemplo
// Así es como se retrocede una línea de texto
void retrocederLinea() {
if (!archivo.position()) return; // No se puede retroceder si estamos al principio del archivo
retrocede();
if (archivo.peek() == '\r') retrocede(); // Esto se hace cuando el salto de línea se compone de dos caracteres
while (archivo.position() && archivo.peek() != '\n') retrocede(); // Así es como se retrocede
if (archivo.position()) archivo.read(); // Esto sucede solo si el comienzo de la línea NO es también el comienzo del archivo.
}
// Asumiendo que 'archivo' sea una variable global
bool retrocede() {
return archivo.seek(archivo.position() - 1);
}
Vea también