2012-10-12 6 views
3

phonegap의 FILE API (실제로 w3c 파일 api입니다)를 사용하여 모든 디렉토리와 하위 디렉토리 내의 SD 카드에있는 각 파일을 탐색하려고합니다. 나는 그들의 본질을보고이 파일들에 대한 일련의 작업을 수행해야한다. 특정 유형의 파일을 검색하지 않고 순차적으로 각 파일을 탐색합니다.phonegap 파일 api를 사용하여 SD 카드의 각 파일을 탐색합니다.

누군가 나를 도와 줄 수 있습니까? 순회에 필요한 요구 사항을 가진 기본 루프 프레임 워크만으로 큰 도움이 될 것입니다.

미리 감사드립니다.

답변

3

나는 다음과 같은 코드가 작동해야한다고 생각 :

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onRequestFileSystem, fail); 

function onRequestFileSystem(fileSystem) { 
    var directoryReader = fileSystem.root.createReader(); 
    directoryReader.readEntries(onReadEntries, fail); 
} 

function onReadEntries(entries) { 
    var i; 
    for (i = 0; i < entries.length; i++) { 
     if (entries[i].isFile == true) { 
     // ... 
     } 
     if (entries[i].isDirectory == true) { 
     var directoryReader = entries[i].fullPath.createReader(); 
     directoryReader.readEntries(onReadEntries, fail); 
     } 
    } 
} 

http://www.c-sharpcorner.com/UploadFile/e83792/filesystem-directoryentry-objects-in-phonegap/

+0

죄송합니다 .. 나는 언급하는 것을 잊어 버렸다고 생각합니다. 하지만 모든 하위 디렉토리에있는 모든 파일을 지나쳐야합니다. 나는 그 질문을 다시 편집 할 것이다. –

+0

다음 reccursively 가서 – shkschneider

+0

각 디렉터리 읽기 readEntries()에서 디렉터리 판독기를 만드는 방법을 알아낼 couldnt. –

0
scan : function(url,fileType,callback) 
     { 
      var fileTypeCollection = []; 
      var defer = $q.defer(); 


       url.forEach(function(element, index) 
       { 
       //requestLocalFileSystemURL 
       log(element); 
       window.resolveLocalFileSystemURL(element,onRequestFileSystem, fail); 


       log("Ends resolve"); 
       }); 


      function onRequestFileSystem(fileSystem) 
      { 
       var directoryReader = fileSystem.createReader(); 
       directoryReader.readEntries(onReadEntries,fail); 
      } /*onRequestFile Ends*/ 

      function onReadEntries(entries) 
      { 


       if(entries.length==0) 
       { 
        log("Entries Length....Resolving"); 
        defer.resolve(fileTypeCollection); 
       } 
       else 
       { 
        entries.forEach(function(element, index) 
        { 

         if (element.isDirectory === true) 
         { 
         // Recursive -- call back into this subdirectory 

         onRequestFileSystem(element); 
         } 

         if(element.isFile == true) 
         { 

           fileType.forEach(function(type) 
           { 
            if(element.name.indexOf(type) != -1) 
            { 
             fileTypeCollection.push(element); 
            } 
           }); 
         } /*is File ENds*/ 
        }); /*Entries For Each Ends*/ 
       } 

      } /*OnRead Ends*/ 

      function fail(resp) 
      { 
       log(resp); 
       defer.reject(); 
      } /*Fail Ends*/ 

     return defer.promise; 

    } //Scan Function Ends 

이 시도. 당신이 원한다면 약속을 지우고 콜백을 사용하십시오. 당신이 그때 그 ok를 고칠 수 있다면 FileType에 대한 푸시 후 콜백을 사용하십시오