Diferencia entre revisiones de «File.seek()»
(Página creada con «== Descripción == Coloca el "cursor" del archivo en la posición dada. '''0''' para volver al inicio, File.size() para colocarse al final. == Sintaxis == <pre> archiv...») |
(→Ejemplo 1) |
||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 4: | Línea 4: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
+ | File archivo = SD.open("archivo.txt", FILE_WRITE); | ||
archivo.seek(pos); | archivo.seek(pos); | ||
</pre> | </pre> | ||
Línea 12: | Línea 13: | ||
== Retorna == | == 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. | '''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 == | == Comentarios == | ||
Línea 21: | Línea 19: | ||
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()]]). | 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()]]). | ||
− | == Ejemplo == | + | == 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. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
bool leerRegistro(Registro* r, unsigned int posicion) { | 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 | |
− | + | }else{ | |
− | + | return false; | |
− | + | } | |
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Línea 37: | Línea 39: | ||
== Referencias == | == Referencias == | ||
+ | * [https://www.arduino.cc/en/Reference/FileSeek Referencias] | ||
+ | |||
[[Category:Libreria SD]] | [[Category:Libreria SD]] |
Revisión actual del 21:07 4 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
}else{
return false;
}
}
Vea también