Javascript 如何在Phonegap中创建嵌套目录
我试过了,但根本不能满足我的要求。我写了一个新的:Javascript 如何在Phonegap中创建嵌套目录,javascript,android,html,cordova,html5-filesystem,Javascript,Android,Html,Cordova,Html5 Filesystem,我试过了,但根本不能满足我的要求。我写了一个新的: 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_D
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 ");
}
我只是反复调用fs.root.getDirectory
,但失败了。但第一个几乎是一样的
ps:我在Android和PhoneGap 1.7.0上工作。我无法找出您代码中的错误。我有一个通过PhoneGap2.0编写的本地化库。我已经从那里为您的需求提取了代码。看看它是否适用于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);
如果根目录“story_repository”下的第一个目录不存在,那么对getDirectory的第一次调用将调用错误回调,因为在不存在的目录中创建dir_name的调用将在本机端出错
“故事库”存在吗?cordova phoengap有一个简单的文件管理器: 您可以递归创建目录:
//CREATE A DIRECTORY RECURSIVELY
var a = new DirManager(); // Initialize a Folder manager
a.create_r('folder_a/folder_b',Log('created successfully'));
请在javascript中使用try-catch,然后告诉我是否可以在成功(文件系统){console.log(fileSystem.name);}//请求持久文件系统窗口。请求文件系统(LocalFileSystem.persistent,0,onSuccess,onError)@skhurams 2.2.0文档仍然没有告诉我们如何创建嵌套目录。。。我将尝试使用onSuccess(文件系统)。。。当你使用onsuccess时,它会告诉你是什么错误,我稍后会检查。我现在被一些其他令人烦恼的问题打断了。。。抱歉,您的示例仅创建一个目录“story\u repository/”+User\u Editime+“/rec”。但我需要的是在任意路径上依次创建许多目录:“story\u repository/”+dir\u name+“/img/”、“story\u repository/”+dir\u name+“/rec/”、“XXX”。为什么不为每个目录调用它呢?是的,它确实存在,我尝试了两种方法:一种是创建“story\u repository”手动创建,第二个是这个示例:我通过在string_数组中指定第一个元素来创建目录。string_array=新数组(“story_repository/”,main_dir,main_dir+”/rec,main_dir+“/img”,“story_repository/”+用户名);应该首先创建story_存储库,事实确实如此。但是,errorCallback仍然会发生。成功的回调也会发生。。。
//CREATE A DIRECTORY RECURSIVELY
var a = new DirManager(); // Initialize a Folder manager
a.create_r('folder_a/folder_b',Log('created successfully'));