2010-11-19 80 views
3

我使用應該避免文件安全問題的FileStream類打開並測試數據。它工作正常,直到我嘗試保存到本地文件。當我在adl下測試時,我得到一個安全錯誤,雖然我確實沒問題(至少它試圖保存),直到應用程序打包並在設備上測試,但文件無法保存。有任何想法嗎?AS3在iOS下保存本地文件

public class FilesApp extends MovieClip { 

    var file:File; 
    var xmldata:XML; 

    public function FilesApp() { 
     // constructor code 

     LoadButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_load); 
     ParseButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_parse); 
     SaveButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_save); 
    } 
    public function xml_load (e:MouseEvent):void 
    { 
     file = File.applicationDirectory; 
     file = file.resolvePath("./Data/data.xml"); 

     var fileStream:FileStream = new FileStream(); 
     fileStream.open(file, FileMode.READ); 
     var str:String = fileStream.readMultiByte(file.size, File.systemCharset); 
     fileStream.close(); 
     DataText.text = str; 

     xmldata = XML(str); 
     trace('xml file loaded'); 
    } 
    public function xml_save (e:MouseEvent):void 
    { 
     var writeStream:FileStream = new FileStream(); 
     writeStream.open(file, FileMode.WRITE); 
     writeStream.writeUTF("<xml><name>Changed</name><score>5000</score></xml>"); 
     writeStream.close(); 
     trace('xml file saved'); 
    } 
    public function xml_parse (e:MouseEvent):void 
    { 
     trace('xml file saved'); 
     DataText.text = "Your name is:"+xmldata.name+" Your best score is:"+xmldata.score; 
    } 
} 
+0

您是否將iOS指定爲Apple iPhone/iPad的操作系統?恐怕他們不支持Actionscript。 – Nevin 2010-11-19 08:12:31

+2

Adob​​e ios打包程序是原生的,並於9月份被蘋果允許。 http://www.adobe.com/devnet/logged_in/abansod_iphone.html – woodscreative 2010-11-20 00:58:17

回答

0

你試過Filereference.save()

+0

嗯...... save()似乎不是fileStream類的一個方法。 – woodscreative 2010-11-21 16:10:48

+0

Filereference類 – www0z0k 2010-11-21 23:36:23

+0

FileReference.Save()詢問用戶要保存的位置。這種用法不適合。 – 2011-12-31 21:52:19

4

您不能將數據保存在File.applicationDirectory中,它意味着不可變。請將其存儲在File.applicationStorageDirectory中。還有File.documentsDirectory - 當前用戶文檔目錄,如果您確定需要將它與您的文件一起扔掉:)

+0

會給這個鏡頭,看看會發生什麼。 – woodscreative 2010-11-20 00:59:37

+1

請注意'File.documentsDirectory'不是iOS上的公共目錄,而是應用程序沙箱的子目錄:http://help.adobe.com/zh_CN/as3/dev/WS5b3ccc516d4fbf351e63e3d118666ade46-7fe4.html – 2012-04-20 01:59:29

+0

如果您存儲大量數據,請查看[this](http://blogs.adobe.com/simplicity/2010/01/api_tip_dont_abuse_fileapplica.html),最好對大文件使用'File.documentsDirectory'。 – 2013-05-20 22:10:28

0

由於您使用writeUTF執行寫操作,而readMultiByte執行讀操作,所以它失敗。

如果您切換到readUTF它將工作。

1

對我來說,切換到readUTF()工作。

此外,初始化「文件」的兩行應該在構造函數中,否則不能調用「xml_save」(您必須首先執行「xml_load」)。

謝謝