我正在尝试将从我的应用程序中收集的数据保存到它随附的名为data.xml
. 我正在使用该fileReference.save
方法,但它似乎并没有完成这项工作:
function parseXML(xmlData:XML):void
{
trace("Parsing:");
trace("-----------------");
var itemIndex:uint = event.currentTarget.index;
delete data.item[itemIndex];
fileReference.save(data, "data.xml");
trace(xmlData);
}
不幸的是,这会导致弹出一个“另存为”对话框,询问用户他们希望将 xml 文件保存在哪里(当我真正想要发生的是项目目录中的 data.xml 文件被自动覆盖时用户有任何发言权)。
我听说这FileStream
是要走的路(尤其是我要在 Air for iOS 上部署它),但我不知道如何实现它。
有任何想法吗?
编辑:我已经用下面的建议更新了我的问题,但它仍然不起作用。该data.xml
文件位于我的桌面上名为“RecipeMatcher2”的同一目录中,即/Desktop/RecipeMatcher2/(我使用的是Mac OS X),但我也希望它解析为文件在iPhone上存储的任何路径。
function parseXML(xmlData:XML):void
{
trace("Parsing:");
trace("-----------------");
var itemIndex:uint = event.currentTarget.index;
file = File.applicationStorageDirectory;
file = file.resolvePath("data.xml");
delete data.item[itemIndex];
var writeStream:FileStream = new FileStream();
writeStream.open(file, FileMode.WRITE);
writeStream.writeUTFBytes(data.toXMLString());
writeStream.close();
trace('xml file saved');
}
我最初像这样加载我的 xml 数据:
loader = new URLLoader();
// listens to see if data has fully loaded//
loader.addEventListener(Event.COMPLETE, dataLoaded);
//loads local xml file with URLrequest method//
loader.load(new URLRequest("data.xml"));
这是我与这个问题相关的公共变量:
public var loader:URLLoader;
public var file:File;
public var data:XML;
public var items:XMLList;