Esempio: lettura e scrittura di dati con accesso casualeAdobe AIR 1.0 e versioni successive I file MP3 possono includere tag ID3, che sono sezioni all'inizio o alla fine del file contenente i metadati che identificano la registrazione. Lo stesso formato tag ID3 ha diverse revisioni. Questo esempio descrive come leggere e scrivere da un file MP3 contenente il formato ID3 più semplice (versione ID3 1.0) mediante “accesso casuale a dati di file”, il che significa che legge e scrive in posizioni arbitrarie del file. Un file MP3 contenente un tag della versione ID3 1 comprende i dati ID3 alla fine del fine, negli ultimi 128 byte. Quando si accede a un file per l'accesso casuale di lettura/scrittura, è importante specificare FileMode.UPDATE come il parametro fileMode del metodo 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);
Ciò consente di eseguire sia la lettura sia la scrittura nel file. All'apertura del file, è possibile impostare il puntatore position nei 128 byte di posizione prima della fine del file: fileStr.position = file.size - 128; Questo codice imposta la proprietà position in questo percorso nel file perché il formato ID3 v1.0 specifica che i dati del tag ID3 sono memorizzati negli ultimi 128 byte del file. La specifica indica sempre quanto segue:
Il metodo id3TagRead() controlla i dati dopo esser stati letti (in occasione dell'eventocomplete): 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);
}
}
È possibile inoltre eseguire una scrittura ad accesso casuale nel file. Ad esempio, è possibile analizzare la variabile id3Title per garantire che sia correttamente capitalizzata (mediante i metodi della classe String), e quindi scrivere una stringa modificata, denominata newTitle, nel file come nel caso seguente: fileStr.position = file.length - 125; // 128 - 3 fileStr.writeMultiByte(newTitle, "iso-8859-1"); Per conformarsi alla versione ID3 1 standard, la lunghezza della stringa newTitle deve avere 30 caratteri, allungata alla fine del codice di carattere 0 (String.fromCharCode(0)). |
|