Exemple : Lecture et écriture de données en mode aléatoireAdobe AIR 1.0 et ultérieur Les fichiers MP3 peuvent renfermer des balises ID3, autrement dit, des sections en début ou fin de fichier contenant des métadonnées identifiant l’enregistrement. Il existe différentes versions du format de balise ID3. L’exemple suivant explique comment accéder en lecture et écriture à un fichier MP3 contenant le format ID3 le plus simple (ID3 version 1.0) par le biais d’un « accès aléatoire aux données », c’est-à-dire en lisant et écrivant des données à des emplacements arbitraires dans le fichier. Dans un fichier MP3 contenant une balise ID3 version 1, les données ID3 figurent dans les 128 derniers octets du fichier. Lorsque vous accédez à un fichier en mode de lecture/écriture aléatoire, il est important de définir le paramètre fileMode de la méthode open() ouopenAsync() sur FileMode.UPDATE : var file:File = File.documentsDirectory.resolvePath("My Music/Sample ID3 v1.mp3"); var fileStr:FileStream = new FileStream(); fileStr.open(file, FileMode.UPDATE); Vous pouvez ainsi accéder au fichier en lecture et écriture. A l’ouverture du fichier, vous pouvez définir le pointeur position sur 128 octets avant la fin du fichier : fileStr.position = file.size - 128; Ce code définit la propriété position sur cet emplacement du fichier car le format ID3 v1.0 stipule que les balises ID3 sont stockées dans les derniers 128 octets du fichier. La spécification définit également les informations suivantes :
La méthode id3TagRead() vérifie les données après leur lecture (sur envoi de l’événement 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); } } Vous pouvez également écrire dans le fichier en mode aléatoire. Par exemple, vous pourriez analyser la variable id3Title pour vérifier que l’utilisation des majuscules est correcte (à l’aide des méthodes de la classe String), puis écrire une chaîne modifiée, newTitle, dans le fichier, comme l’illustre l’exemple suivant : fileStr.position = file.length - 125; // 128 - 3 fileStr.writeMultiByte(newTitle, "iso-8859-1"); Conformément à la norme ID3 version 1, la chaîne newTitle doit comprendre 30 caractères et être remplie à droite par le code de caractère 0 (String.fromCharCode(0)). |
|