在下列範例中,會示範如何對包含 XML 資料的文字檔案執行讀取和寫入作業。
若要讀取檔案中的資料,請先初始化 File 和 FileStream 物件,然後呼叫 FileStream 的
readUTFBytes()
方法,再將取得的字串轉換為 XML 物件:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
同樣地,將資料寫入至檔案也很簡單,只要設定適當的 File 和 FileStream 物件,然後呼叫 FileStream 物件的寫入方法即可。請將 XML 資料的字串版本傳遞給寫入方法,如下列程式碼所示:
var prefsXML:XML = <prefs><autoSave>true</autoSave></prefs>;
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var outputString:String = '<?xml version="1.0" encoding="utf-8"?>\n';
outputString += prefsXML.toXMLString();
fileStream.writeUTFBytes(outputString);
fileStream.close();
上述範例使用
readUTFBytes()
和
writeUTFBytes()
方法,因為這兩個方法會假設檔案格式為 UTF-8。如果檔案格式並非 UTF-8,您就必須使用不同的方法 (請參閱
資料格式,以及選擇要使用的讀取和寫入方法
)。
上述範例使用開啟供執行同步作業的 FileStream 物件。您也可以開啟檔案供執行非同步作業 (如此便必須依賴事件偵聽程式函數來回應事件)。例如,在下列程式碼中,會說明如何以非同步方式讀取 XML 檔案:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, processXMLData);
fileStream.openAsync(file, FileMode.READ);
var prefsXML:XML;
function processXMLData(event:Event):void
{
prefsXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
}
當已將整個檔案都讀取至讀取緩衝區中時 (當 FileStream 物件傳送
complete
事件時),就會叫用
processXMLData()
方法。這個方法會呼叫
readUTFBytes()
方法以取得讀取資料的字串版本,並且根據該字串建立名為
prefsXML
的 XML 物件。
如需示範這些功能的樣本應用程式,請參閱
從 XML 偏好設定檔案讀取和寫入資料
。