Formati di dati e selezione dei metodi di lettura e scrittura da utilizzare

Adobe 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.