GetFile Cordova 3.4.0 err.code 1000

use*_*369 4 android cordova html5-filesystem

我尝试使用cordova 3.4.0 GetFile:

    FileManager.prototype.ReadAsTextFromFile = function (fileName, readDataCallBack) {
    var that = this;
    try {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
            fileSystem.root.getFile(fileName, {create: false}, 
                function (fileEntry) {
                    fileEntry.file(
                        function (file){
                            var reader = new FileReader();                             
                            reader.onloadend = readDataCallBack;
                            reader.readAsText(file);
                        }                   
                    , function(err){alert('ReadFile' + " fail: " + err.code);});
                }
            , function(err){alert('GetFile' + " fail: " + err.code);});
        }, function(err){alert('FileSystem' + " fail: " + err.code);});
    } catch (e) {
        logError(e);
    }
}       
Run Code Online (Sandbox Code Playgroud)

但是在调用getfile上获取err.code 1000.

文件名是:

var fileName = "/scard/" + reliefsSubfolderName + reliefname 
               + String.fromCharCode(47) + reliefsManifestFileName;
Run Code Online (Sandbox Code Playgroud)

/scard/my_dir_on_card/my_file_name.drd(drd是我的扩展名,但是是一个文本文件)

我可以知道实现目标的正确方法是什么?

Ami*_*esh 6

我想你需要从你的fileName中省略前导"/".
错误代码1000的最可能原因是不存在的路径文件,同时通过getFile创建引用,并将create option设置为false

fileSystem.root.getFile(fileName, {create: false},...
Run Code Online (Sandbox Code Playgroud)

您可以尝试在调用getFile之前检查完整文件路径并查看它是否有效.除了初始协议之外,您的路径不应包含多个连续的"/".例如cdvfile:// localhost/persistent/scard .....

console.log(fileSystem.root.toURL() + fileName);
Run Code Online (Sandbox Code Playgroud)