Funciones SD clase Archivo

La clase File permite la lectura y escritura en archivos individuales en la tarjeta SD.

FUNCIONES

available()

Descripción:
Comprueba si hay bytes disponibles para leer en el archivo.
available() hereda de la clase Stream.

Sintaxis:
file.available()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open())

Retornos:
el número de bytes disponibles (int)
________________________________________________________________________

close()

Descripción:
Cierra el archivo, y asegura que los datos que  se escriben en el se guardan físicamente en la tarjeta SD.

Sintaxis:
file.close()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
Ninguno
________________________________________________________________________

flush()

Descripción:
Se asegura de que todos los  bytes escritos en el archivo se guardan físicamente en la tarjeta SD. Esto se hace automáticamente cuando se cierra el archivo.
flush () hereda de la clase Stream.

Sintaxis:
file.flush()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
Ninguno.
________________________________________________________________________

peek()

Descripción:
Lee un byte del archivo sin avanzar al siguiente. Es decir, las llamadas sucesivas a peek() devolverán el mismo valor, al igual que la siguiente llamada a read ().
peek() hereda de la clase Stream.

Sintaxis:
file.peek()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
El siguiente byte (o carácter), o -1 si no hay ninguno disponible.
________________________________________________________________________

position()

Descripción:
Obtiene la posición actual dentro del archivo (por ejemplo, la ubicación en la que el siguiente byte se lee o se escribe).

Sintaxis:
file.position()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
la posición dentro del archivo (unsigned long)
________________________________________________________________________

print()

Descripción:
Imprime datos en el archivo, que debe haber sido abierto en modo escritura. Los números se imprimen como una secuencia de dígitos, cada uno uno es un carácter ASCII (por ejemplo, el número 123 es enviado como los tres caracteres '1', '2', '3').

Sintaxis:
file.print(data) 

file.print(data, BASE)

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())
data: los datos a imprimir (char, byte, int, long o string)
BASE (opcional): la base en la que imprimir números: BIN para binario (base 2), DEC para decimal (base 10), OCT para octal (base 8), HEX para hexadecimal (base 16).

Retornos:
byte

print () devolverá el número de bytes escritos, la lectura de ese número es opcional
________________________________________________________________________

println()

Descripción:
Imprime datos seguidos de un retorno de carro y salto de línea en el archivo,  que debe haber sido abierto en modo escritura. Los números se imprimen como una secuencia de dígitos, cada uno uno es un carácter ASCII (por ejemplo, el número 123 es enviado como los tres caracteres '1', '2', '3').

Sintaxis:
file.println() 
file.println(data) 

file.print(data, BASE)

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())
data: los datos a imprimir (char, byte, int, long o string)
BASE (opcional): la base en la que imprimir números: BIN para binario (base 2), DEC para decimal (base 10), OCT para octal (base 8), HEX para hexadecimal (base 16).

Retornos:
byte

println () devolverá el número de bytes escritos, la lectura de ese número es opcional
________________________________________________________________________

seek()

Descripción:
Busca a una nueva posición en el archivo, la cual debe estar entre 0 y el tamaño del archivo (inclusive).

Sintaxis:
file.seek(pos)

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())
pos: la posición que se quiere gestionar (long sin signo)

Retornos:
true si ha tenido éxito, false si ha fracasado (booleano)
________________________________________________________________________

size()

Descripción:
Obtiene el tamaño del archivo.

Sintaxis:
file.size()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
El tamaño del archivo en bytes (long sin signo)
________________________________________________________________________

read()

Descripción:
Lee un byte del archivo.
peek() hereda de la clase Stream.

Sintaxis:
file.read

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
El siguiente byte (o carácter), o -1 si no hay ninguno disponible.
________________________________________________________________________

write()

Descripción:
Escribe datos en el archivo.

Sintaxis:
file.write(data) 

file.write(buf, len)

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())
data: el byte, char, o string (char *) a escribir
buf: una matriz de caracteres o bytes

len: el número de elementos en el buffer

Retornos:
byte

write() devolverá el número de bytes escritos, la lectura de ese número es opcional
________________________________________________________________________

isDirectory()

Descripción:
Los directorios (o carpetas) son tipos especiales de archivos, esta función informa si el archivo actual es un directorio o no.

Sintaxis:
file.isDirectory()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
boolean

Ejemplo:
#include <SD.h>

 File root;

 void setup()
 {
   Serial.begin(9600);
   pinMode(10, OUTPUT);

   SD.begin(10);

   root = SD.open("/");

   printDirectory(root, 0);

   Serial.println("Terminado!");
 }

 void loop()
 {
   //no pasa nada después de finalizada la instalación.
 }

 void printDirectory(File dir, int numTabs) {
    while(true) {

      File entry =  dir.openNextFile();
      if (! entry) {
        // no hay mas atchivos
        //Serial.println("**No hay mas archivos**");
        break;
      }
      for (uint8_t i=0; i<numTabs; i++) {
        Serial.print('\t');
      }
      Serial.print(entry.name());
      if (entry.isDirectory()) {
        Serial.println("/");
        printDirectory(entry, numTabs+1);
      } else {
        // los archivos tienen tamaño, los directorios no
        Serial.print("\t\t");
        Serial.println(entry.size(), DEC);
      }
    }
 }
  __________________________________________________________________

openNextFile()

Descripción:
Informa del archivo o carpeta siguiente en un directorio.

Sintaxis:
file.openNextFile()

Parámetros:
file: una instancia de la clase File (devuelto por SD.open ())

Retornos:
char: el archivo o carpeta siguiente en la ruta

Ejemplo:

#include <SD.h>

File root;
void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  SD.begin(10);
  root = SD.open("/");
  printDirectory(root, 0);
  delay(2000);
  Serial.println();
  Serial.println("Rebobinado, y repitiendo a continuación:" );
  Serial.println();
  delay(2000);
  root.rewindDirectory();
  printDirectory(root, 0);
  root.close();
}

void loop()
{
  // no pasa nada después de finalizada la instalación.
}

void printDirectory(File dir, int numTabs)
{
  while (true)
  {
    File entry = dir.openNextFile();
    if (! entry)
    {
      if (numTabs == 0)
        Serial.println("** Terminado **");
      return;
    }
    for (uint8_t i = 0; i < numTabs; i++)
      Serial.print('\t');
    Serial.print(entry.name());
    if (entry.isDirectory())
    {
      Serial.println("/");
      printDirectory(entry, numTabs + 1);
    }
    else
    {
      Serial.print("\t\t");
      Serial.println(entry.size(), DEC);
    }
    entry.close();
  }
}

________________________________________________________________________

rewindDirectory()()

Descripción:
rewinDirectorio () le llevará de vuelta al primer archivo en el directorio, se utiliza junto con OpenTextFile ().

Sintaxis:
file.rewindDirectory()

Parámetros:
file: una instancia de la clase File.

Retornos:
Ninguno.

Ejemplo:

#include <SD.h>

 File root;

 void setup()
 {
   Serial.begin(9600);
   pinMode(10, OUTPUT);

   SD.begin(10);

   root = SD.open("/");

   printDirectory(root, 0);

   Serial.println("Terminado!");
 }

 void loop()
 {
   // no pasa nada después de finalizada la instalación.
 }

 void printDirectory(File dir, int numTabs) {
    while(true) {

      File entry =  dir.openNextFile();
      if (! entry) {
        // no hay mas archivos
        // retorna al primer archivo del directorio
        dir.rewindDirectory();
        break;
      }
      for (uint8_t i=0; i<numTabs; i++) {
        Serial.print('\t');
      }
      Serial.print(entry.name());
      if (entry.isDirectory()) {
        Serial.println("/");
        printDirectory(entry, numTabs+1);
      } else {
        // los archivos tienen tamaño, los directorios no
        Serial.print("\t\t");
        Serial.println(entry.size(), DEC);
      }
    }
 }




3 comentarios: