我的最終目標是打開一個xml文件,更改數據並保存它。我用URLRequest打開它。我能夠改變的XML,但是,我的問題是:當我嘗試用流打開它來保存文件,那麼它說:as3 URLRequest和文件流保存xml數據 - 錯誤#3013:文件或目錄正在使用
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);
}
}
/////////
}
}
如何事件監聽器添加到它,然後:
答案可以在這個環節上發現了什麼?另外,當我放置一個trace(myXML)時,我似乎無法使用這種方法獲得變量。在你的代碼之後。 –
這一個正在殺死我。我很親密。我只需要寫入XML,但文件流已經打開。 –
這是一個同步呼叫,所以不需要聽衆。如果你想異步打開它,你應該檢查FileStream openAsync。 – Fygo