Diferencia entre revisiones de «File.seek()»

De ArduWiki
Saltar a: navegación, buscar
(Sintaxis)
(Ejemplo 1)
 
(No se muestran 2 ediciones intermedias del mismo usuario)
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>
Línea 13: 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.
 
== Advertencias ==
 
* Esta función siempre fallará si la instancia representa un directorio o carpeta; o si el archivo no está abierto.
 
  
 
== Comentarios ==
 
== Comentarios ==
Línea 22: 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))) {
  if (archivo.seek(posicion * sizeof(r))) {
+
      return archivo.read(r, sizeof(r)); // Si se logra leer algo, equivale a retornar true
    return archivo.read(r, sizeof(r)); // Si se logra leer algo, equivale a retornar true
+
  }else{
  }
+
      return false;
 
+
  }
  return false;
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Línea 38: Línea 39:
  
 
== Referencias ==
 
== Referencias ==
 +
* [https://www.arduino.cc/en/Reference/FileSeek Referencias]
 +
 
[[Category:Libreria SD]]
 
[[Category:Libreria SD]]

Revisión actual del 17:07 4 jul 2019

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


Referencias