我如何保存一个很长的字符串

How do i save a very long string?

本文关键字:一个 字符串 保存 何保存      更新时间:2023-09-26

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

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

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

文件读取器和写入器代码(问题是它从未找到或创建文件,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);
}

解决了文件路径应该是"file:///store/home/user/documents/readme.txt"的形式。然而,这给我带来了我的下一个问题-我如何让用户选择一个文件路径,因为它将是不同的每个用户或至少对于bb, iphone, android用户?