as3 URL请求和文件流保存xml数据-错误#3013:文件或目录正在使用
我的最终目标是打开一个xml文件,更改数据并保存它。我打开它时提出了一个请求。我可以更改xml,但是,我的问题是:当我尝试用流打开它以保存文件时,它会说:as3 URL请求和文件流保存xml数据-错误#3013:文件或目录正在使用,xml,actionscript-3,filestream,Xml,Actionscript 3,Filestream,我的最终目标是打开一个xml文件,更改数据并保存它。我打开它时提出了一个请求。我可以更改xml,但是,我的问题是:当我尝试用流打开它以保存文件时,它会说: Error: Error #3013: File or directory is in use. 我想我可以用相同的流打开它,但是我不知道如何像我在使用URLRequest时在脚本中那样获取xml变量 因此,我要么需要a)关闭xml文件以便用流打开它,要么b)用流打开xml,了解如何获取所需的变量并操作它们以进行保存。可能有c)但我现在想不
Error: Error #3013: File or directory is in use.
我想我可以用相同的流打开它,但是我不知道如何像我在使用URLRequest时在脚本中那样获取xml变量
因此,我要么需要a)关闭xml文件以便用流打开它,要么b)用流打开xml,了解如何获取所需的变量并操作它们以进行保存。可能有c)但我现在想不起来了
这是我的密码:
package com
{
import flash.filesystem.*;
import flash.system.System;
import flash.display.Stage;
import flash.events.*;
import flash.net.*;
import flash.display.*;
public class userSettings
{
public var pathToFile:String = File.desktopDirectory.resolvePath('userSettings.xml').nativePath;
public var someFile:File = new File(pathToFile);
public var stream:FileStream = new FileStream();
public var myLoader = new URLLoader();
public function userSettings()
{
loadSettings();
}
public function saveSettings(daFile:String)
{
stream.open(someFile, FileMode.WRITE);
stream.writeUTFBytes(daFile);
trace("Settings SAVED! " +daFile);
//stream.close();
}
public function loadSettings()
{
trace(pathToFile);
myLoader.load(new URLRequest(pathToFile));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
var myXML = new XML(e.target.data);
// Gets vars from xml. I need this option.
var homeT = myXML.Settings.(@Title=="homeT");
trace("And it works? " + homeT);
// Changes vars in xml
myXML.Settings.(@Title == "homeT").* = "Home2";
// trace works with changed xml
trace(myXML);
/// Now trying to save it doesn't work.
saveSettings(myXML);
}
}
/////////
}
}
据我所知,您可以从流中读取字节,例如:
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var myXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
然后您就有了一个XML对象,您可以像在示例中那样对其进行操作。在使用FileStream类打开、写入和关闭之前需要稍微延迟。同样,仅限Windows!我使用了一个计时器来调用写入位置的函数
在这个链接上可以找到答案:那么如何向其中添加事件侦听器呢?而且,当我放置跟踪(myXML)时,我似乎无法使用此方法获取变量;在你的密码之后。这一个要杀了我。我是如此接近。我只需要编写xml,但该文件的文件流已经打开。这是一个同步调用,因此不需要侦听器。如果要异步打开它,应该选中FileStream openAsync.ah ok。为什么是跟踪(myXML);空了吗(我的mac电脑上没有任何错误,因此我假设这可能是重复的: