Diferencia entre revisiones de «File.seek()»
(→Sintaxis) |
|||
Línea 4: | Línea 4: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
− | File archivo; | + | File archivo = SD.open("archivo.txt", FILE_WRITE); |
archivo.seek(pos); | archivo.seek(pos); | ||
</pre> | </pre> |
Revisión del 19:17 3 jul 2019
Contenido
Descripción
Coloca el "cursor" del archivo en la posición dada. 0 para volver al inicio, File.size() para colocarse al final.
Sintaxis
File archivo = SD.open("archivo.txt", FILE_WRITE); archivo.seek(pos);
Parámetros
- pos
- la posición (en bytes) que se desea establecer en el "cursor" (unsigned long).
Retorna
true si fue posible cambiar dicha posición; false en caso contrario (bool). Puede fallar si el valor ingresado no comprende el rango entre cero y el tamaño actual del archivo.
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 cambiar el índice (como el de un vector/matriz) al cuál se quiere acceder la próxima vez; para así recuperar (File.read() o File.peek()) el valor almacenado en dicho lugar, o modificarlo (File.write()/File.print()).
Advertencias
- Esta función siempre fallará si la instancia representa un directorio o carpeta; o si el archivo no está abierto.
Ejemplo 1
Funcion de leer registro.
bool leerRegistro(Registro* r, unsigned int posicion) {
if (archivo.seek(posicion * sizeof(r))) {
return archivo.read(r, sizeof(r)); // Si se logra leer algo, equivale a retornar true
}
return false;
}
Vea también