Search code examples
javascriptjquerycordovajquery-mobilecordova-plugins

How to create a separate directory for cordova app and storing data in it?


I want to create a specific directory for my cordova project. I have no idea what to do for that. I refered so may links like, How to move file to app directory cordova

cordova, android app how to create subfolder and someother links. But it is not clear whether they are using any cordova plugins for this or we can do with pure javascript. These are not working for me. Please suggest if any plugins or functions are available.

Thanks.


Solution

  • You need to use this plugin: https://www.npmjs.com/package/cordova-plugin-file

    I don't know what version of cordova do you use and if this plugin was updated, but when I use it, it doesn't work with WindowsPhone. Ok for Android and iOS.

    To get file system:

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, downloadFile, fileSystemFail);
    

    Donwload file function:

    downloadFile: function(fileSystem){
        // your code
    }
    

    To create a directory:

    var directoryEntry = fileSystem.root;
    var folderName = "Folder";
    
    directoryEntry.getDirectory(folderName, { create: true, exclusive: false }, onDirectorySuccess, onDirectoryFail);
    

    Where onDirectorySuccess and onDirectoryFail are functions like:

    onDirectorySuccess: function(parent){
        console.log(parent);
    },
    onDirectoryFail: function(error){
        console.log("Unable to create new directory: " + error.code);
    }
    

    To get path of file in the directory:

    var filePath = directoryEntry.toURL() + "/" + folderName + "/" + fileName;
    

    And to get file:

    directoryEntry.getFile(folderName + "/" + fileName, { create: true, exclusive: false }, onFileSuccess, onFileFail);
    

    To delete a file first you need to get it:

    directoryEntry.getFile(folderName + "/" + fileName, { create: true, exclusive: false }, onFileSuccessRemove, onFileFail);
    

    Then in success function:

    function onFileSuccessRemove(entry) {
        entry.remove();
    }
    

    My application was with file download, so this is code to save a file in a directory:

    var fileTransfer = new FileTransfer();
    fileTransfer.download(URL, filePath, downloadComplete, downloadFail, true);
    

    It's not your case but I hope it helps.