我试过了
this,但它根本不满足我的要求.我写了一个新的:
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 "); }
虽然目录已创建,但它会发送给我
ErrorCallback:”alert(“Recursively create directories error.”);”
首先,我不认为这个代码会起作用,因为我尝试了这个,但失败了:
window.requestFileSystem( LocalFileSystem.PERSISTENT,//request file system success callback. function(fileSys) { fileSys.root.getDirectory( "story_repository/"+ dir_name,//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/",function(directory) { alert("Create a directory: "+ "story_repository/"+ dir_name + "/img/"); //check. //create dir_name/rec/ fileSys.root.getDirectory { "story_repository/"+ dir_name + "/rec/",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()); }
我只是反复调用fs.root.getDirectory但它失败了.但第一个几乎是一样的……
>问题根本是什么?为什么第一个总是给我ErrorCallback?
>为什么第二个不能工作?
>有没有人有更好的解决方案? (没有ErrorcallBack消息)
ps:我在Android和PhoneGap 1.7.0上工作.
解决方法
我无法弄清楚代码中的错误.我有一个库,通过PhoneGap 2.0编写localIO.我从那里抽象出了符合您要求的代码.看看它是否适用于1.7.我没有在抽象后测试代码.您可能需要修复错误(如果有).
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);