我正在使用FileStream类打开和测试数据,这应该可以避免文件安全问题。它工作正常,直到我尝试保存到本地文件。当我在adl下测试时,我得到了一个安全错误,我确实没问题(至少它试图保存),直到应用程序在设备上打包和测试,但文件无法保存。有什么想法吗?
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 :(得分:4)
您无法在File.applicationDirectory
中保存数据,它意味着不可变。将其存储在File.applicationStorageDirectory
中。还有File.documentsDirectory
- 当前用户文档目录,如果您确定需要将其与文件一起丢弃:)
答案 1 :(得分:1)
对我来说,切换到readUTF()有效。
另外,初始化“file”的两行应该在构造函数中,否则你不能调用“xml_save”(你必须先做“xml_load”)。
由于
答案 2 :(得分:0)
你试过Filereference.save()
吗?
答案 3 :(得分:0)
它失败是因为您使用writeUTF
执行写操作而readMultiByte
执行读操作。
如果切换到readUTF
,它将有效。