Javascript PhoneGap/Cordova for android文件插件错误代码1

Javascript PhoneGap/Cordova for android文件插件错误代码1,javascript,android,file,cordova,phonegap-plugins,Javascript,Android,File,Cordova,Phonegap Plugins,我正在使用phonegap,我想从android设备访问位于www/res的文件,但它抛出了“未找到”错误。。。我确定文件就在那里,这里是我写的代码: onDeviceReady: function(){ window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "www/res/myfile.txt", app.gotFile, app.fail); }, gotFile: function(fileEn

我正在使用phonegap,我想从android设备访问位于www/res的文件,但它抛出了“未找到”错误。。。我确定文件就在那里,这里是我写的代码:

onDeviceReady: function(){
    window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "www/res/myfile.txt", app.gotFile, app.fail);
},

gotFile: function(fileEntry){
    fileEntry.file(function(file){
        var reader = new FileReader();

        reader.onloadend = function(e) {
            alert(this.result);
        }

        reader.readAsText(file);
    });
},

fail: function(e){
    console.log("Error reading");
    console.log(e.code);
}

代码非常简单,但我看不出有什么问题

您可以尝试使用相对路径。当然,这取决于您在问题中陈述的代码所在的位置。我假设这段代码在默认的phonegap index.js文件中,该文件的目录是“www/js/index.js”。txt文件的相对路径为“../res/myfile.txt”

window.resolveLocalFileSystemURL("../res/myfile.txt", app.gotFile, app.fail);

我可以试试你给我的密码。如果将函数名
resolveLocalFileSystemURL
更改为
resolveLocalFileSystemURI
,至少对我来说,这样做很好。您可以看到本地URL cordova.file.applicationDirectory适用于iOS,但不适用于Android。 您必须遍历cordova.file.dataDirectory,直到找到名为app directory的GUID的子目录/res

请尝试以下操作:

var dirEntry = function (entry) {
    var dirReader = entry.createReader();
    dirReader.readEntries(
        function (entries) {
            $.each(entries, function (n, i) {
                if (i.isDirectory === true) {
                    if (i.nativeURL.indexOf('www/res') > -1) {
                        //found the target /res directory
                        var path = i.nativeURL + '/myfile.txt';
                        window.resolveLocalFileSystemURL(path, app.gotFile, app.fail);
                        return false; //no need to iterate more
                    } else {
                        // Recursive -- call back into this subdirectory
                        dirEntry(i);
                    }
                }
            });

        },
        function (error) {
            console.log("readEntries error: " + error.code);
        }
    );
};

var dirError = function (error) {
    console.log("getDirectory error: " + error.code);
};

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, dirEntry, dirError);

请将路径更改为
file:///android_asset/www/res/myfile.txt
我试过了,但不起作用。它不起作用,我认为它不支持相对路径。好的,我这么做了,得到了一个控制台日志,上面说“resolveLocalFileSystemURI”不推荐使用,应该使用“resolveLocalFileSystemURL”。。。即使使用URI,我仍然会得到未找到的错误。你是如何尝试代码的?我正在android设备上使用phonegap的应用程序进行测试…在控制台登录时,我发现我的nativeURL如下所示:file:///data/data/com.tkj.textread/files/12590FAA-5EDD-4B12-856D-F52A0A1599F2/res/