如何将文件复制到Cordova中的另一个目录?

时间:2016-11-14 16:15:58

标签: cordova

我已经将复制文件的代码写入一个位置到另一个位置。但是它会抛出未知的错误。并且在andriod.can中运行时也面临nullPointerException,任何人都请解释我。 这是我的代码

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successCallback, errorCallback)
                    function successCallback(filesystem) {
                        alert("2");
                        filesystem.root.getDirectory('mservice', {create:false}, function(fileEntry) {alert("3");
                            fileEntry.getFile('queue_mgr.txt',{create:false},function(file){alert("4");
                            var filePath = "/Download/queue_mgr.txt";
                            alert(filePath);
                            var name ='queue_mgr.txt';
                            parentEntry =new DirectoryEntry(name,filePath);
                            //alert(parentEntry.name);
                            alert(parentEntry);
                                file.copyTo(parentEntry,'queue_mgr.txt',function(e){alert("success"+e.fullPath);},function(er){alert("fail"+er.code);});
                            },errorCallback);
                        },errorCallback);
                    }
                    function errorCallback(error) {
                        alert("ERROR: " + error.code);
                    }

-

System.err:     at org.apache.cordova.file.FileUtils.transferTo(FileUtils.java:784)
11-14 21:41:29.785 32161-32229/com.example.database W/System.err:     at org.apache.cordova.file.FileUtils.access$1300(FileUtils.java:56)
11-14 21:41:29.785 32161-32229/com.example.database W/System.err:     at org.apache.cordova.file.FileUtils$21.run(FileUtils.java:510)
11-14 21:41:29.785 32161-32229/com.example.database W/System.err:     at org.apache.cordova.file.FileUtils$25.run(FileUtils.java:657)
11-14 21:41:29.785 32161-32229/com.example.database W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-14 21:41:29.785 32161-32229/com.example.database W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-14 21:41:29.795 32161-32229/com.example.database W/System.err:     at java.lang.Thread.run(Thread.java:841)

1 个答案:

答案 0 :(得分:0)

以下是来源:https://github.com/apache/cordova-plugin-file/blob/master/src/android/FileUtils.java

看起来你正在触及FileNotFoundException?通过向代码添加更多异常处理,可能更容易分辨出它正在失败的调用。

编辑:异常来自内部方法TransferTo(),该方法在第515行左右从file.copyTo()调用。该方法正在寻找一些值,其中一个或多个似乎是空 - 因此你的例外:

    if (srcURLstr == null || destURLstr == null) {
        // either no source or no destination provided
        throw new FileNotFoundException();
    }

检查以确保传递到file.copyTo()的源和目标参数是有效的URL字符串而不是空的。