PhoneGap/Cordova BlackBerry FileSystem.root总是返回SD卡?

Pet*_*y B 8 file-io blackberry sd-card cordova

我在BlackBerry上加载了两个应用程序,一个是本机应用程序,另一个是基于PhoneGap/Cordova的应用程序.

这两个应用程序共享一个设置文件: file:///store/home/user/myfile.txt

要通过Cordova访问此文件,我打电话给:

fileSystem.root.getFile("home/user/myfile.txt", null, gotFileEntry, fail);

但是,在某些设备上fileSystem.root返回SDCard目录,而不是存储文件的内部存储器,因此出现FileNotFound错误.

我试过调用fileSystem.root.getParent(gotParent, fail);,希望得到文件系统的根,然后从内部存储器中获取文件,如下所示:

parentDir.getFile("store/home/user/myfile.txt", null, gotFileEntry, fail);

但这也不起作用,我仍然收到一个文件未找到错误.

如何使用PhoneGap/Cordova每次获取内部存储器的根目录?

F48*_*481 4

您使用什么版本的 Cordova?从 BlackBerry WebWorks(OS 5.0 及更高版本)开始支持
Cordova File-API 。

我是否正确地假设您只想读取(和写入)该文件?
如果是这样,您可以尝试使用Cordova File-ReaderCordova File-Writer

文件阅读器

function win(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("read success");
        console.log(evt.target.result);
    };
    reader.readAsText(file);
};

var fail = function(evt) {
    console.log(error.code);
};

entry.file(win, fail);
Run Code Online (Sandbox Code Playgroud)

文件写入器

function win(writer) {
    writer.onwrite = function(evt) {
        console.log("write success");
    };
    writer.seek(writer.length);
    writer.write("appended text");
};

var fail = function(evt) {
    console.log(error.code);
};

entry.createWriter(win, fail);
Run Code Online (Sandbox Code Playgroud)

否则,尝试一下该片段(代码是一个旧项目,但当时有效)

<script type="text/javascript" charset="utf-8" src="css-js/phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

}

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

}

function gotFileEntry(fileEntry) {

    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.onwrite = function(evt) {
        console.log("write success");
    };
    writer.write("some sample text");
Run Code Online (Sandbox Code Playgroud)

我希望我能帮助你,最诚挚的问候F481