首页 > 解决方案 > 如何将我的 XML 文件保存到特定文件夹?

问题描述

我有一个包含 XML 文件的应用程序(Android 和 IOS)(在设置中嵌入了 Adob​​e Flash)。

知道如何使用 AS3 代码进行这些操作吗?

  1. 找到 xml 文件的确切 URL。

  2. 将 xml 文件移动到特定文件夹中。

这是我尝试过的:

1)我试图通过加载文件URLLoader,然后将其保存在特定文件夹中(没有成功)。

var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("soleil.xml"));
myLoader.addEventListener(Event.COMPLETE, complete_handler);

function complete_handler (event:Event) :void
{
    var myXML:XML;
    myXML = new XML(event.target.data);
    var fr:FileReference = new FileReference();
    fr.save(myXML, 'soleil.xml');

    var fileStream:FileStream = new FileStream();
    trace(File.applicationDirectory.nativePath);
    fileStream.open(new File(File.applicationDirectory.nativePath+"\\soleil.xml"),FileMode.WRITE);
}

最后一行抛出一个错误Error #2004: One of the parameters is invalid

fileStream.open(newFile(File.applicationDirectory.nativePath+"\\soleil.xml"),FileMode.WRITE);

2)只是想知道我的嵌入 xml 文件保存在哪里soleil.xml。但我认为,它只会创建一条路径......

var file:File = File.applicationStorageDirectory; 
file = file.resolvePath("soleil.xml");
trace(file.url);

编辑 2:

XML 文件包含我要使用的数据。

我在使用之前所做的File是:

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("soleil.xml"));
myLoader.addEventListener(Event.COMPLETE, processSoleil);

        function processSoleil(e:Event):void {
            myXML = new XML(e.target.data);
    var results:XMLList = myXML.row.(date == mySavedData.data.theDate);
    if(results.length()){

    for each(var row:XML in results){
        //doingstuff

    }
}
        }

我应该改变我的方法吗?

现在我已经设法通过以下方式复制soleil.xml到特定路径:

var packagedFile:File = File.applicationDirectory.resolvePath( "soleil.xml" );
var destFile_soleilXML:File = File.documentsDirectory.resolvePath( "soleil.xml" );
packagedFile.copyTo( destFile_soleilXML );

我虽然可以通过执行以下操作来加载文件:

myLoader.load(new URLRequest(destFile_soleilXML.nativePath));

我不应该那样做吗?

目前我在尝试加载我的 xml 文件时遇到错误(流错误(显然意味着“找不到文件”))。

有小费吗 ?

标签: androidiosactionscript-3flashair

解决方案


在 Android 上,您的应用程序文件被打包在 APK 中并直接从那里访问。由于这些文件通常是压缩的,因此这些文件没有直接路径 ( nativePath)。您将需要使用File该类来读取/提取/复制数据。

与您的应用程序一起打包的文件相对于以下位置存储File.applicationDirectory

var packagedFile:File = File.applicationDirectory.resolvePath( "soleil.xml" );

将其复制到可以获得本机路径的位置。最好和最一致的地方是File.applicationStorageDirectory

var destFile:File = File.applicationStorageDirectory.resolvePath( "soleil.xml" );

packagedFile.copyTo( destFile );

您现在应该能够访问复制文件的本机路径:

trace( destFile.nativePath );

推荐阅读