2014-07-14 64 views
0

我正在android中使用actionscript 3製作android應用程序。我需要從服務器下載文件並將其保存到移動SD卡。以下是我的代碼,該文件從服務器加載,但如何將其保存在SD卡上?將文件保存到sdcard as3 Air for Android

import flash.filesystem.*; 
var urlString:String = "http://www.mywebsite.com/xyz/myswftodownload.swf"; 
var urlReq:URLRequest = new URLRequest(urlString); 
var urlStream:URLStream = new URLStream(); 
var fileData:ByteArray = new ByteArray(); 
urlStream.addEventListener(ProgressEvent.PROGRESS, onProgress); 
urlStream.addEventListener(Event.COMPLETE, loaded); 
urlStream.load(urlReq); 

function loaded(event:Event):void 
{ 
    urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); 
    trace("Loaded"); 
    urlStream.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
    urlStream.removeEventListener(Event.COMPLETE, loaded); 
    //NOW HOW TO SAVE THE LOADED FILE ON SDCARD?? 
} 

function onProgress(evt:ProgressEvent):void { 
var nPercent:Number = Math.round((evt.bytesLoaded/evt.bytesTotal) * 100);  
//loadingAnim.bar.scaleX = nPercent/100; 
status.text = nPercent.toString() + "%"; 
} 

回答

1

你可以做這樣的事情

//NOW HOW TO SAVE THE LOADED FILE ON SDCARD 
var file:File = File.userDirectory.resolvePath("myswftodownload.swf"); 
var fileStream:FileStream = new FileStream(); 
fileStream.open(file, FileMode.WRITE); 
fileStream.writeBytes(fileData, 0, fileData.length); 
fileStream.close(); 

File.userDirectory通常指向SD卡(外部存儲)。但是請注意,外部存儲不必始終可用(例如,當設備通過USB連接成大容量存儲設備時)。

在你的情況下,我會考慮使用內部存儲,而不是使用File.applicationDirectory或File.applicationStorageDirectory來保存你的swf文件。外部存儲是更好的保存文件,如圖像,音樂,文件..

+0

我的代碼現在工作,但我現在遇到一個新的問題。我無法讀取已保存的swf。當我檢查文件存在時,它會返回true,但不加載相同的文件。 :( – Bhaijaan

+0

您可能需要將應用程序上下文設置爲當前的加載SWF – Deko