使用 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:File = File.applicationStorageDirectory.resolvePath("test.txt"); 
var str:String = "Hello."; 
file.addEventListener(Event.COMPLETE, fileSaved); 
file.save(str); 
function fileSaved(event:Event):void 
{ 
    trace("Done."); 
}

save() 方法的 data 參數可以接受 String、XML 或 ByteArray 類型的值。若引數為 String 或 XML 類型的值,這個方法就會將檔案儲存為 UTF-8 編碼的文字檔。

當此程式碼樣本執行時,應用程式會顯示一個對話方塊來讓使用者選取檔案的儲存目標。

以下的程式碼會從 UTF-8 編碼的文字檔中載入一個字串:

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

FileStream 類別所提供的功能比 load()save() 方法所提供的功能還多:

  • 使用 FileStream 類別時,您對資料的讀取和寫入作業便能透過同步以及非同步的方式進行。

  • FileStream 類別可讓您以遞增方式將資料寫入檔案。

  • FileStream 類別可讓您以隨機存取的目的開啟檔案 (可對檔案的任何區段進行讀取和寫入)。

  • FileStream 類別可讓您指定檔案的存取類型,只要設定 open()openAsync() 方法的 fileMode 參數即可。

  • FileStream 類別不需對使用者顯示「開啟」或「儲存」對話方塊就可讓您將資料存入檔案。

  • 使用 FileStream 類別讀取資料時,您可以直接使用位元組陣列之外的類型。