2010-11-19 17 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

Apple iPhone/iPadのOSとしてiOSを参照していますか?私は彼らがActionscriptをサポートしていないのは恐れている。 – Nevin

+2

Adob​​e ios packagerはネイティブで、9月にappleによって許可されました。 http://www.adobe.com/devnet/logged_in/abansod_iphone.html – woodscreative

答えて

0

あなたはFilereference.save()を試しましたか?

+0

Mmm ... save()はfileStreamクラスのメソッドではないようです。 – woodscreative

+0

Filereferenceクラス – www0z0k

+0

FileReference.Save()は、保存する場所をユーザーに要求します。この使用には適切ではありません。 –

4

File.applicationDirectoryにデータを保存することはできません。これは不変であることを意味します。代わりにFile.applicationStorageDirectoryに保管してください。

+0

これを撃ち、何が起こるか見ることができます。 – woodscreative

+1

'File.documentsDirectory'はiOSの共通ディレクトリではなく、アプリケーションサンドボックスのサブディレクトリです:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118666ade46-7fe4.html –

+0

大量のデータを格納するには、[this](http://blogs.adobe.com/simplicity/2010/01/api_tip_dont_abuse_fileapplica.html)を参照してください。大きなファイルには 'File.documentsDirectory'を使用することをお勧めします。 –

0

writeUTFを書き込みに使用し、readMultiByteを読み込みに使用しているためにエラーが発生します。このファイルには、File.documentsDirectory - 現在のユーザーのドキュメントディレクトリもあります。

readUTFに切り替えると機能します。

1

私にとっては、readUTF()に切り替えることができました。

また、 "file"を初期化する2行がコンストラクタに含まれている必要があります。そうでなければ、 "xml_save"を呼び出すことはできません(最初に "xml_load"を実行する必要があります)。

ありがとうございました

関連する問題