Formati di dati e selezione dei metodi di lettura e scrittura da utilizzareAdobe AIR 1.0 e versioni successive Ogni file è impostato su un set di byte in un disco. In ActionScript, i dati di un file possono essere sempre rappresentati come ByteArray. Ad esempio, il codice seguente legge i dati da un file in un oggetto ByteArray denominato bytes: var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completeHandler);
myFileStream.openAsync(myFile, FileMode.READ);
var bytes:ByteArray = new ByteArray();
function completeHandler(event:Event):void
{
myFileStream.readBytes(bytes, 0, myFileStream.bytesAvailable);
}
Ad esempio, il codice seguente scrive i dati da un ByteArray denominato bytes in un file: var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.open(myFile, FileMode.WRITE);
myFileStream.writeBytes(bytes, 0, bytes.length);
Tuttavia, spesso non si vuole memorizzare i dati in un oggetto ByteArray di ActionScript. E spesso il file di dati è in un formato file specificato. Ad esempio, i dati nel file possono essere in un formato file di testo ed è possibile rappresentare tali dati in un oggetto String. Per tale motivo, la classe FileStream comprende metodi di lettura e scrittura per la lettura e la scrittura di dati da e in tipi diversi da oggetti ByteArray. Ad esempio, il metodo readMultiByte() consente di leggere dati da un file e memorizzarli in una stringa, come nel codice seguente: var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completed);
myFileStream.openAsync(myFile, FileMode.READ);
var str:String = "";
function completeHandler(event:Event):void
{
str = myFileStream.readMultiByte(myFileStream.bytesAvailable, "iso-8859-1");
}
Il secondo parametro del metodo readMultiByte() specifica il formato testo che ActionScript utilizza per interpretare i dati ("iso-8859-1" nell'esempio). ActionScript supporta codifiche di set di caratteri comuni (vedete Set di caratteri supportati). La classe FileStream comprende inoltre il metodo readUTFBytes() che legge i dati dal buffer di lettura in una stringa che utilizza il set di caratteri UTF-8. Poiché i caratteri nel set di caratteri UTF-8 hanno una lunghezza variabile, non utilizzate readUTFBytes() in un metodo che risponde all'evento progress perché i dati al termine del buffer di lettura possono rappresentare un carattere incompleto. (Il che è anche vero quando si utilizza il metodo readMultiByte() con una codifica di caratteri a lunghezza variabile.) Per tale motivo, leggete l'intero set di dati quando l'oggetto FileStream invia l'evento complete. Vi sono inoltre metodi di scrittura simili, writeMultiByte() e writeUTFBytes(), per operazioni con oggetti String e file di testo. I metodi readUTF() e writeUTF() (da non confondere con readUTFBytes() e writeUTFBytes()) leggono e scrivono anche i dati di testo in un file, ma ipotizzano che tali dati siano preceduti da quelli che specificano la lunghezza dei dati di testo, il che non è comune nei file di testo standard. Alcuni file di testo codificati con UTF iniziano con un carattere "UTF-BOM" (byte order mark) che definisce l'endiannes, nonché il formato di codifica (come UTF-16 o UTF-32). Per un esempio di lettura e scrittura di un file di testo, consultate Esempio: lettura di un file XML in un oggetto XML. I metodi readObject() e writeObject() sono metodi utili per memorizzare e recuperare i dati per oggetti ActionScript complessi. I dati vengono codificati in AMF (ActionScript Message Format). Adobe AIR, Flash Player, Flash Media Server, e Flex Data Services includono API per l'utilizzo di dati in questo formato. Vi sono altri metodi di lettura e scrittura (come readDouble() e writeDouble()). Tuttavia, se vengono utilizzati, assicuratevi che il formato file corrisponda ai formati dei dati definiti da questi metodi. I formati file sono spesso più complessi dei semplici formati di testo. Ad esempio, un file MP3 comprende dati compromessi che possono essere interpretati solo con algoritmi di decompressione e decodifica specifici dei file MP3. I file MP3 possono anche includere tag ID3 che contengono informazioni di metatag sul file (come il titolo e l'artista di un brano). Vi sono più versioni del formato ID3, ma il più semplice (versione ID3 1) è riportato nella sezione Esempio: lettura e scrittura di dati con accesso casuale. Altri formati di file (per immagini, database, documenti applicativi e altro) hanno strutture differenti e per operare con i loro dati in ActionScript, è necessario comprendere come sono strutturati i dati. |
|