繁体   English   中英

使用Flash Actionscript 3.0从Android移动设备保存和加载文件

[英]Saving and Loading files from an Android mobile Device using Flash Actionscript 3.0

我正在为台式机和Android开发Test Maker应用。 我可以在桌面上保存和加载,但在Android上失败。 我只能保存文件,但是无法加载保存的文件。 Android设备显示“未找到文件”。 它甚至没有打开文件浏览器。 我正在执行的保存和加载类型是用户实际上可以查找并打开其项目的类型。 我目前正在使用FileReference来执行此操作。 它适用于台式机,但不适用于Android Mobile。 有人可以帮我吗?

我很确定您不能在移动设备上使用FileReference (尽管有人错误地改正了我)。

在移动设备上,应使用FileFileStream类来加载/保存本地文件。

这是一个示例,您可以使用一个编译时间常数来创建(以确定是桌面还是AIR)并适当地加载到称为textfield的文本textfield或从中加载:

CONFIG::air {
    var file:File = File.applicationStorageDirectory.resolvePath("myFile.txt");

    if(file.exists){
        var stream:FileStream = new FileStream();
        stream.open(file, FileMode.READ);

        textfield.text = stream.readUTF(); //this may need to changed depending what kind of file data you're reading

        stream.close();
    }else{
        data = "default value"; //file doesn't exist yet
    }
}

CONFIG::desktop {
    //use your file reference code to populate the data variable
}

并保存:(假设您有一个要保存其文本的文本字段)

var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeUTF(textfield.text);
fileStream.close();

除了writeUTF (用于纯文本)外,还有其他保存方法,当与flash.net.registerClassAlias结合使用时, writeObject可用于保存自定义对象

文件类在flash.filesystem包中

编辑

您可以尝试以下操作来让用户选择AIR上的位置。

var file:File = File.applicationStorageDirectory;
file.addEventListener(Event.SELECT, onFileSelected);
file.browseForOpen("Open Your File", [new FileFilter("Text Files", "*.txt")]);

function onFileSelected(e:Event):void {
    var stream:FileStream = new FileStream();
    stream.open(e.target as File, FileMode.READ);

    textField.text = stream.readUTF();
}

var saveFile:File = File.applicationStorageDirectory.resolvePath("myFile.txt");
saveFile.addEventListener(Event.SELECT, onSaveSelect);
saveFile.browseForSave("Save Your File");

function onSaveSelect(e:Event):void {
    var file:File = e.target as File;

    var stream:FileStream = new FileStream();
    stream.open(file, FileMode.WRITE);
    stream.writeUTF(textField.text);
    stream.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM