as3 URL请求和文件流保存xml数据-错误#3013:文件或目录正在使用

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)但我现在想不

我的最终目标是打开一个xml文件,更改数据并保存它。我打开它时提出了一个请求。我可以更改xml,但是,我的问题是:当我尝试用流打开它以保存文件时,它会说:

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电脑上没有任何错误,因此我假设这可能是重复的: