每个文件是磁盘上的一组字节。在 ActionScript 中,文件中的数据始终可以表示为 ByteArray。例如,以下代码将文件中的数据读入到名为
            
             bytes
            
            的 ByteArray 对象中:
           
           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); 
} 
           
            同样,以下代码将名为
            
             bytes
            
            的 ByteArray 中的数据写入文件:
           
           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); 
           
            不过,通常您不希望在 ActionScript ByteArray 对象中存储数据,并且数据文件通常是指定的文件格式。
           
           
            例如,文件中的数据可能是文本文件格式,您可能希望在 String 对象中表示这种数据。
           
           
            因此,FileStream 类包括读取和写入方法,用于读取和写入除 ByteArray 对象以外的类型的数据。例如,使用
            
             readMultiByte()
            
            方法可以从文件中读取数据,然后将它存储到字符串,如以下代码中所示:
           
           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"); 
} 
           
            
             readMultiByte()
            
            方法的第二个参数指定 ActionScript 用来解释数据的文本格式(在示例中是“iso-8859-1”)。Adobe AIR 支持常见的字符集编码(请参阅
            
             支持的字符集
            
            )。
           
           
            FileStream 类还包括
            
             readUTFBytes()
            
            方法,该方法使用 UTF-8 字符集将读取缓冲区中的数据读入一个字符串中。由于 UTF-8 字符集中字符的长度是可变的,请不要在响应
            
             progress
            
            事件的方法中使用
            
             readUTFBytes()
            
            ,这是因为读取缓冲区结尾的数据可能表示不完整的字符。(将
            
             readMultiByte()
            
            方法用于可变长度字符编码时,需同样遵循上述要求。)因此,当 FileStream 对象调度
            
             complete
            
            事件时,应读取整个数据集。
           
           
            还有类似的写入方法
            
             writeMultiByte()
            
            和
            
             writeUTFBytes()
            
            可用于 String 对象和文本文件。
           
           
            
             readUTF()
            
            和
            
             writeUTF()
            
            方法(请不要与
            
             readUTFBytes()
            
            和
            
             writeUTFBytes()
            
            相混淆)也可以从文件读取文本数据和将文本数据写入文件,不过它们假定文本数据前面有指定文本数据长度的数据(此方式在标准文本文件中不常见)。
           
           
            有些 UTF 编码的文本文件以“UTF-BOM”(字节顺序标记)字符开头,该字符定义字节顺序以及编码格式(如 UTF-16 或 UTF-32)。
           
           
            有关读取和写入文本文件的示例,请参阅
            
             示例:将 XML 文件读取到 XML 对象中
            
            。
           
           
            使用
            
             readObject()
            
            和
            
             writeObject()
            
            可以很方便地存储和检索复杂 ActionScript 对象的数据。数据采用 AMF (ActionScript Message Format) 编码。Adobe AIR、Flash Player、Flash Media Server 和 Flex Data Services 包括用于此格式数据的 API。
           
           
            还有一些其他读取和写入方法(如
            
             readDouble()
            
            和
            
             writeDouble()
            
            )。不过,如果您使用这些方法,请确保文件格式与这些方法定义的数据的格式相匹配。
           
           
            文件格式通常比简单文本格式复杂。例如,MP3 文件包括压缩的数据,这些数据只能使用特定于 MP3 文件的解压缩和解码算法解释。MP3 文件还可能包括 ID3 标签,这些标签包含有关文件的元标签信息(如歌曲的标题和艺术家)。ID3 格式有多种版本,不过最简单的版本(ID3 第 1 版)在
            
             示例:使用随机访问读取和写入数据
            
            部分中进行了介绍。
           
           
            其他文件格式(用于图像、数据库、应用程序文档等)具有不同的结构,若要在 ActionScript 中使用这些格式的数据,必须了解数据的构造方式。