Cordova文件未创建目录

时间:2016-12-08 17:06:23

标签: cordova cordova-plugins

我有一个使用文件插件的cordova应用程序,在应用程序内部一切正常,但我使用的文件不会出现在文件资源管理器中。

我的课程是:

function FileCordova () {

    this.createDir = function(dirName, callback) {

      App.db.fsSetup();
      if (App.db.hasFS()) {

            window.requestFileSystem(window.PERSISTENT, 0, function (f) {
              f.root.getDirectory(dirName, {create: true}, function (d) {
                  typeof callback === 'function' && callback(d.name, d.fullPath);
              },
              function(error, err2){
                console.log(error);
              });
            }, function(error,err2){
              console.log(error);
            });

        } else {
            typeof callback === 'function' && callback();
        }
    };

}

在应用程序文件内部出现,但我无法在根目录中找到。

2 个答案:

答案 0 :(得分:2)

我最近不得不在我的应用中执行此操作。我使用window.resolveLocalFileSystemURL()方法代替window.requestFileSystem()

var exportDirectory = "";
var subdir = "MySubdirectory";
// What directory should we place this in?
if (cordova.file.documentsDirectory !== null) {
    // iOS, OSX
    exportDirectory = cordova.file.documentsDirectory;
} else if (cordova.file.sharedDirectory !== null) {
    // BB10
    exportDirectory = cordova.file.sharedDirectory;
} else if (cordova.file.externalRootDirectory !== null) {
    // Android, BB10
    exportDirectory = cordova.file.externalRootDirectory;
} else {
    // iOS, Android, BlackBerry 10, windows
    exportDirectory = cordova.file.DataDirectory;
}

window.resolveLocalFileSystemURL(exportDirectory, function (directoryEntry) {
    console.log("Got directoryEntry. Attempting to open / create subdirectory:" + subdir);
    directoryEntry.getDirectory(subdir, {create: true}, function (subdirEntry) {
        subdirEntry.getFile(filename, {create: true}, function (fileEntry) {
            console.log("Got fileEntry for: " + filename);
            fileEntry.createWriter(function (fileWriter) {
                console.log("Got fileWriter");
                // make your callback to write to the file here...
            }, exportFail);
        }, exportFail);
    }, exportFail);
}, exportFail);

但请注意,Android文件传输实用程序未正确刷新。我不得不断开/重新连接USB电缆,然后显示目录。这实际上可能是您使用文件资源管理器的问题(即,在更改代码之前检查)。

答案 1 :(得分:1)

我认为重点在于您将文件保存在App Data Directory(私有)中,如果您想将其置于公共场所(允许以这种方式在文件浏览器中查看),您必须查看{{ 3}}文档并选择一个公共位置,例如在cordova.file.externalRootDirectory