Przykład: Odczyt i zapis danych z dostępem losowymAdobe AIR 1.0 i wersje późniejsze Pliki MP3 mogą zawierać znaczniki ID3, które są sekcjami na początku lub końcu pliku i zawierają metadane identyfikujące nagranie. Format znacznika ID3 ma różne wersje. Niniejszy przykład prezentuje sposób zapisu i odczytu z pliku MP3, który zawiera najprostszy format ID3 (wersja ID3 1.0) korzystający z „losowego dostępu do danych pliku”, co oznacza, że zapis i odczyt odbywa się z/do dowolnych miejsc w pliku. Plik MP3, który zawiera znacznik ID3 w wersji 1, zawiera dane ID3 na końcu, w ostatnich 128 bajtach. W przypadku uzyskiwania dostępu do pliku dla losowego odczytu/zapisu należy określić FileMode.UPDATE jako parametr fileMode metody open() lub openAsync(): var file:File = File.documentsDirectory.resolvePath("My Music/Sample ID3 v1.mp3");
var fileStr:FileStream = new FileStream();
fileStr.open(file, FileMode.UPDATE);
Dzięki temu możliwe będzie odczytywanie i zapisywanie w pliku. Po otwarciu pliku można ustawić wskaźnik position na pozycję przesuniętą o 128 bajtów przed końcem pliku: fileStr.position = file.size - 128; Poniższy kod ustawia właściwość position na tę pozycję w pliku, ponieważ format ID3 v1.0 określa, że dane znacznika ID3 są zapisane w ostatnich 128 bajtach pliku. Specyfikacja określa również następujące zależności:
Metoda id3TagRead() sprawdza dane po jej wczytaniu (po wywołaniu zdarzenia 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);
}
}
Możliwy jest również zapis do pliku z dostępem losowym. Na przykład: możliwe jest przeanalizowanie zmiennej id3Title w celu zapewnienia, że jej znaki są poprawnej wielkości (za pomocą metod klasy String), a następnie zapisanie zmodyfikowanego ciągu znaków (o nazwie newTitle) do nowego pliku, jak poniżej: fileStr.position = file.length - 125; // 128 - 3 fileStr.writeMultiByte(newTitle, "iso-8859-1"); W celu zapewnienia zgodności ze standardem ID3 w wersji 1 długość ciągu znaków newTitle powinna wynosić 30 znaków, a koniec ciągu należy uzupełnić znakiem o kodzie 0 (String.fromCharCode(0)). |
|