需要加载一个文件,将其更改,然后将更改写回到该文件中。我收到文件使用错误。在写文件之前,如何确定文件已关闭:
protected function getData():void
{
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onComplete);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest(filePath));
}
protected function onComplete(e:Event):void
{
var data:XML = new XML((e.target as URLLoader).data);
data.replace('User',<User></User>);
var stream:FileStream = new FileStream();
stream.open(new File(filePath),FileMode.WRITE);
stream.writeMultiByte('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<?xml-stylesheet type="text/xsl" href="template.xsl"?>\n'+data.toXMLString(),File.systemCharset);
stream.close();
}
我收到错误错误#2044:未处理的IOErrorEvent :。text = Error#3013:文件或目录正在使用中。在views.:JobsManagement/readyToClean()[C:\Users\David\Adobe Flash Builder 4.7 \ NxMobileInspect_FixingMemoryIssues \ src \ views \ JobsManagement.mxml:190]在flash.events::EventDispatcher/dispatchEventFunction()在flash.events: flash.net::URLLoader/onComplete()上的:EventDispatcher / dispatchEvent()
已经尝试使用方法openAsync打开不起作用。错误来自于错误窗口而不是调试器。有任何想法吗?
您可以尝试使用urlLoader.close(),但我个人使用try catch,然后使用Timer Dealy,直到可以写入文件为止。您当然可以限制使用的尝试捕获的数量。就像是:
protected function onComplete(e:Event):void
{
var data:XML = new XML((e.target as URLLoader).data);
data.replace('User',<User></User>);
saveFile();
}
private function saveFile(e:Event = null):void
{
try
{
//FileStream write
}
catch(er:Error)
{
//set a timer with listener saveFile and try again
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句