如何将 XML 文件保存到特定文件夹?
How Can I Save My XML File To A Specific Folder?
我有一个应用程序(Android & IOS),其中包含一个 XML 文件(在设置中嵌入了 Adobe Flash)。
知道如何使用 AS3 代码进行这些操作吗?
找到 xml 文件的确切 URL。
将 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 文件时遇到错误(流错误(显然意味着 "file is not found" ))。
有什么建议吗?
在 Android 上,您的应用程序文件打包在 APK 中并可直接从那里访问。由于这些文件通常是压缩的,因此没有指向这些文件的直接路径 (nativePath
)。您将需要使用 File
class 来读取/提取/复制数据。
与您的应用程序打包在一起的文件相对于 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 );
我有一个应用程序(Android & IOS),其中包含一个 XML 文件(在设置中嵌入了 Adobe Flash)。
知道如何使用 AS3 代码进行这些操作吗?
找到 xml 文件的确切 URL。
将 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 文件时遇到错误(流错误(显然意味着 "file is not found" ))。
有什么建议吗?
在 Android 上,您的应用程序文件打包在 APK 中并可直接从那里访问。由于这些文件通常是压缩的,因此没有指向这些文件的直接路径 (nativePath
)。您将需要使用 File
class 来读取/提取/复制数据。
与您的应用程序打包在一起的文件相对于 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 );