Ejemplo: Lectura y escritura de datos con acceso directoAdobe AIR 1.0 y posterior Los archivos MP3 pueden incluir etiquetas ID3, que son secciones al principio o al final del archivo que contienen metadatos para identificar la grabación. El formato mismo de la etiqueta ID3 tiene distintas revisiones. Este ejemplo describe cómo leer y escribir de un archivo MP3 que contiene el formato ID3 más sencillo (ID3 versión 1.0) usando "datos de acceso directo al archivo", que significa que lee y escribe en lugares arbitrarios del archivo. Un archivo MP3 que contiene una etiqueta ID3 versión 1 incluye los datos ID3 al final del archivo, en los últimos 128 bytes. Al acceder a un archivo para fines de lectura/escritura directa, es importante especificar FileMode.UPDATE como parámetro fileMode para el método open() o openAsync(): var file:File = File.documentsDirectory.resolvePath("My Music/Sample ID3 v1.mp3");
var fileStr:FileStream = new FileStream();
fileStr.open(file, FileMode.UPDATE);
Esto permite tanto leer como escribir en el archivo. Al abrir el archivo se puede definir el puntero position en la posición de 128 bytes antes del final del archivo: fileStr.position = file.size - 128; Este código define la propiedad position en esta ubicación del archivo porque el formato ID3 v1.0 especifica que los datos de la etiqueta ID3 se guardan en los últimos 128 bytes del archivo. La especificación también estipula lo siguiente:
El método id3TagRead() comprueba los datos después de leídos (en el momento del evento complete): function id3TagRead():void
{
if (fileStr.readMultiByte(3, "iso-8859-1").match(/tag/i))
{
var id3Title:String = fileStr.readMultiByte(30, "iso-8859-1");
var id3Artist:String = fileStr.readMultiByte(30, "iso-8859-1");
var id3Album:String = fileStr.readMultiByte(30, "iso-8859-1");
var id3Year:String = fileStr.readMultiByte(4, "iso-8859-1");
var id3Comment:String = fileStr.readMultiByte(30, "iso-8859-1");
var id3GenreCode:String = fileStr.readByte().toString(10);
}
}
También se puede realizar una escritura de acceso directo en el archivo. Por ejemplo, se podría analizar la variable id3Title para asegurarse de que las mayúsculas sean correctas (empleando los métodos de la clase String) y después escribir en el archivo una cadena modificada, denominada newTitle, como en el caso siguiente: fileStr.position = file.length - 125; // 128 - 3 fileStr.writeMultiByte(newTitle, "iso-8859-1"); Para cumplir la norma ID3 versión 1, la longitud de la cadena newTitle debe ser de 30 caracteres, con el carácter 0 de relleno al final (String.fromCharCode(0)). |
|