How to create subdirectories in Phonegap

I tried this one , but it did not satisfy my request at all. I am writing a new one:

var file_system; var fs_root; window.requestFileSystem(LocalFileSystem.PERSISTENT, 1024*1024, onInitFs, request_FS_fail); function onInitFs(fs) { file_system= fs; fs_root= file_system.root; alert("ini fs"); create_Directory(); alert("ini fs done."); } var string_array; var main_dir= "story_repository/"+ User_Editime; string_array= new Array("story_repository/",main_dir, main_dir+"/rec", main_dir+"/img","story_repository/"+ User_Name ); function create_Directory(){ var start= 0; var path=""; while(start < string_array.length) { path = string_array[start]; alert(start+" th created directory " +" is "+ path); fs_root.getDirectory( path, {create: true, exclusive: false}, function(entry) { alert(path +"is created."); }, create_dir_err() ); start++; }//while loop }//create_Directory function create_dir_err() { alert("Recursively create directories error."); } function request_FS_fail() { alert("Failed to request File System "); } 

Although the directories are created, it sends me

ErrorCallback: "alert (" Create directory errors recursively. ");"

Firstly, I do not think this code will work, since I tried this, which failed:

 window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, //request file system success callback. function(fileSys) { fileSys.root.getDirectory( "story_repository/"+ dir_name, {create: true, exclusive: false}, //Create directory story_repository/Stallman_time. function(directory) { alert("Create directory: "+ "story_repository/"+ dir_name); //create dir_name/img/ fileSys.root.getDirectory { "story_repository/"+ dir_name + "/img/", {create: true, exclusive: false}, function(directory) { alert("Create a directory: "+ "story_repository/"+ dir_name + "/img/"); //check. //create dir_name/rec/ fileSys.root.getDirectory { "story_repository/"+ dir_name + "/rec/", {create: true, exclusive: false}, function(directory) { alert("Create a directory: "+ "story_repository/"+ dir_name + "/rec/"); //check. //Go ahead. }, createError } //create dir_name/rec/ }, createError } //create dir_name/img }, createError ); }, //Create directory story_repository/Stallman_time. createError()); } 

I just re-call fs.root.getDirectory only, but that failed. But the first is almost the same ...

  • What is the problem? Why does the first always give me ErrorCallback?
  • Why does the second not work?
  • Does anyone have a better solution? (no ErrorcallBack msg)

ps: I work on Android and PhoneGap 1.7.0.

+4
source share
3 answers

I can not understand the error in your code. I have a library written to create localIO via PhoneGap 2.0. I distracted the code for your requirements from there. See if it works on 1.7. I have not tested the code after abstraction. You may need to correct the error, if any.

  var fsroot = fs.root; // initialize this function fileGetDir(path, cb) { var fnGetOrCreateDir = function(p, de) { var entry = p.shift(); if (entry) { de.getDirectory(entry, { create : true }, function(dirEntry) { fnGetOrCreateDir(p, dirEntry); }, fileFSError); } else if (cb) cb(de); }; if (path) { var arPath = path.split("/"); fnGetOrCreateDir(arPath, fsroot); } else { if (cb) cb(fsroot); } } function fileFSError(e) { console.log(e.code); try { console.log("fileFSError: " + JSON.stringify(e)); } catch (err) {} } function printSuccess(dirEntry) { console.log(dirEntry.fullPath); } // Now create your directories like: var main_dir= "story_repository/"+ User_Editime; fileGetDir(mainDir + "/rec", printSuccess); fileGetDir(mainDir + "/img", printSuccess); fileGetDir("story_repository/"+ User_Name, printSuccess); 
+1
source

There is a simple file manager for cordova-phoengap:

https://github.com/torrmal/cordova-simplefilemanagement

You can create directories recursively:

 //CREATE A DIRECTORY RECURSIVELY var a = new DirManager(); // Initialize a Folder manager a.create_r('folder_a/folder_b',Log('created successfully')); 
+1
source

If the first directory with the root "story_repository" does not exist, your first getDirectory call will cause an error callback because the call to create dir_name in a nonexistent directory will fail on the inside.

Is there a "story_repository"?

-1
source

All Articles