使用 load() 和 save() 方法

Flash Player 10 和更高版本,Adobe AIR 1.5 和更高版本

Flash Player 10 向 FileReference 类添加了 load() save() 方法。AIR 1.5 中也有这些方法,并且 File 类从 FileReference 类继承这些方法。这些方法旨在为用户提供一种在 Flash Player 中加载和保存文件数据的安全方法。但是,AIR 应用程序还可以使用这些方法作为一种异步加载和保存文件的简便方式。

例如,以下代码将字符串保存到文本文件:

var file = air.File.applicationStorageDirectory.resolvePath("test.txt"); 
var str = "Hello."; 
file.addEventListener(air.Event.COMPLETE, fileSaved); 
file.save(str); 
function fileSaved(event) 
{ 
    air.trace("Done."); 
}

save() 方法的 data 参数可以采用 String 或 ByteArray 值。当参数为 String 值时,该方法将文件保存为 UTF-8 编码的文本文件。

执行此代码示例时,应用程序将显示一个对话框,用户在该对话框中选择所保存文件的目标。

以下代码从 UTF-8 编码的文本文件加载字符串:

var file = air.File.applicationStorageDirectory.resolvePath("test.txt"); 
file.addEventListener(air.Event.COMPLETE, loaded); 
file.load(); 
var str; 
function loaded(event) 
{ 
    var bytes = file.data; 
    str = bytes.readUTFBytes(bytes.length); 
    air.trace(str); 
}

FileStream 类所提供的功能要多于 load() save() 方法:

  • 借助 FileStream 类,既可以同步读写数据,也可以异步读写数据。

  • 使用 FileStream 类可以用增量方式写入文件。

  • 使用 FileStream 类可以打开文件进行随机访问(读写文件的任意部分)。

  • 使用 FileStream 类可以指定对文件具有的访问权限的类型,具体途径是设置 open() openAsync() 方法的 fileMode 参数。

  • 通过 FileStream,不用向用户显示“打开”或“保存”对话框即可将数据保存到文件。

  • 用 FileStream 类读取数据时可以直接使用字节数组之外的类型。