Diferencia entre revisiones de «File.read()»
De ArduWiki
(→Vea también) |
(→Sintaxis) |
||
(No se muestra una edición intermedia del mismo usuario) | |||
Línea 4: | Línea 4: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
+ | File archivo = SD.open("archivo.txt", FILE_WRITE); | ||
archivo.read() | archivo.read() | ||
archivo.read(buffer, tamanio); | archivo.read(buffer, tamanio); | ||
Línea 28: | Línea 29: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
// Tarjeta inicializada y archivo abierto para lectura | // Tarjeta inicializada y archivo abierto para lectura | ||
− | + | File archivo = SD.open("archivo.txt", FILE_WRITE); | |
int dato; | int dato; | ||
while ((dato = archivo.read()) >= 0){ | while ((dato = archivo.read()) >= 0){ | ||
Línea 34: | Línea 35: | ||
} | } | ||
archivo.close(); | archivo.close(); | ||
+ | } | ||
+ | void loop(){ | ||
+ | //Nada | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Revisión actual del 19:17 3 jul 2019
Contenido
Descripción
Lee un byte/caracter del archivo, y además avanza al siguiente. El valor recuperado es relativo a la posición del "cursor".
Sintaxis
File archivo = SD.open("archivo.txt", FILE_WRITE); archivo.read() archivo.read(buffer, tamanio);
Parametros
- buffer
- una matriz de cualquier tipo, aunque usualmente de tipo byte o char (en la implementación se declara como puntero de tipo void).
- tamanio
- el tamaño de dicha matriz en bytes. (unsigned int).
Retorno
- Para la primera, el valor recuperado, o -1 si no hay datos para leer (int). Esto último puede deberse a que se alcanzó el final del archivo, porque está cerrado o porque no fue abierto para lectura.
- Para la segunda, la cantidad de bytes leídos exitosamente (unsigned int). Si retorna cero, es porque no logró leer nada.
Advertencias
- Si por error no se verifica de antemano si hay datos disponibles, read() retornará 255 para byte en el caso que el valor real sea -1 (nada).
- Esta función siempre fallará si la instancia representa un directorio o carpeta.
Comentarios
A pesar de que la segunda sintaxis hace lo mismo que readBytes() (y que además se puede utilizar con normalidad), se recomienda la aquí mencionada debido a que es más eficiente para la obtención de múltiples bytes que su contraparte "genérica".
Ejemplo
void setup(){
Serial.begin(9600);
// Tarjeta inicializada y archivo abierto para lectura
File archivo = SD.open("archivo.txt", FILE_WRITE);
int dato;
while ((dato = archivo.read()) >= 0){
Serial.write(dato); //Imprime caracter leído
}
archivo.close();
}
void loop(){
//Nada
}
Vea también