我如何保存很长的字符串?

时间:2013-06-11 15:30:24

标签: javascript string cordova

我正在创建一个移动应用程序,我在黑莓手机上遇到了问题(我的大多数用户都在使用黑莓手机)。我正在使用phonegap api。

问题是我正在下载一个字符串,我在手机的浏览器中保存在本地存储中,当字符串超过x百万字符时,localstorage不再能够存储字符串。我需要至少比localstorage提供的空间多10倍。

我已经尝试将字符串保存为文本文件而是跟随phonegap提供的文档,但无法读取或写入文件,所以我放弃了(我认为这是我这样做的唯一方法)。也考虑过压缩字符串,但就像我说之前我需要超过10倍的空间,我不知道如何将10个char字符串转换为1个char字符串。

文件阅读器和编写器的代码(问题是它从未找到或创建文件,getfile()无法读取或写入并返回错误代码1 - file_not_found):

function OnLoadSignInCheck(){

    alert("1");
     document.addEventListener("deviceready", onDeviceReady, false);

}

function onDeviceReady() {
alert("2");
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
alert("3");
    fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
alert("4");
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
alert("5");
    writer.onwriteend = function(evt) {
        alert("contents of file now 'some sample text'");
        writer.truncate(11);  
        writer.onwriteend = function(evt) {
            alert("contents of file now 'some sample'");
            writer.seek(4);
            writer.write(" different text");
            writer.onwriteend = function(evt){
                alert("contents of file now 'some different text'");
            }
        };
    };
    writer.write("some sample text");
    reader();
}

function fail(error) {
    alert(error.code);
}

function reader() {
alert("1");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFSr, fail);
}

function gotFSr(fileSystem) {
    alert("2");
    fileSystem.root.getFile("readme.txt", null, gotFileEntryr, fails);
}

function gotFileEntryr(fileEntry) {
    alert("3");
    fileEntry.file(gotFiler, fails);
}

function gotFiler(file){
    alert("4");
    readDataUrl(file);
    readAsText(file);
}

function readDataUrl(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        alert("Read as data URL");
        alert(evt.target.result);
    };
    reader.readAsDataURL(file);
}

function readAsText(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        alert("Read as text");
        alert(evt.target.result);
    };
    reader.readAsText(file);
}

function fails(evt) {
    alert(evt.target.error.code);
}

1 个答案:

答案 0 :(得分:0)

解决文件路径的格式应为“file:///store/home/user/documents/readme.txt”。然而,这让我想到了我的下一个问题 - 如何让用户选择文件路径,因为它对每个用户或至少对于bb,iphone,android用户来说会有所不同?