javascript – 如何在Phonegap中创建嵌套目录

我试过了 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);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...