2016-03-16 48 views
0

我救了我的文件位置:/storage/emulated/0/myApp/helloworld.wav無法使用cordova刪除文件?

我試圖刪除這個文件

 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successCallback, errorCallback) 

     function successCallback(fs) { 
      fs.root.getFile('/storage/emulated/0/myApp/helloworld.wav', { 
       create: false 
      }, function(fileEntry) { 
       fileEntry.remove(function() { 
        alert('File removed.'); 
       }, errorCallback); 
      }, errorCallback); 
     } 

     function errorCallback(error) { 
      alert("ERROR: " + error.code) 
     } 

它不會刪除該文件,並總是返回error code 1(未找到)。任何人都可以幫助我指出什麼是錯的。

當我從文件管理器檢查

,這是我的文件是物理:/storage/emulated/0/myApp/helloworld.wav但它總是會返回錯誤代碼1

+0

嗨,你可以共享更新的片段刪除的文件,而不是文件目錄。謝謝 –

回答

2

我覺得下面的線可能是問題, 「window.requestFileSystem(LocalFileSystem.PERSISTENT,0,successCallback,errorCallback)

在一些我讀的帖子,有人提到,requestfilsystem方法以及LocalFileSystem.PERSISTENT參數在Android中不起作用,除非該設備是植根的。

我做了它的工作使用 - 「window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,successCallback,errorCallback);

如果需要,我可以分享的示例代碼中它與文件一起刪除目錄。請告訴我。希望能幫助到你。

下面是示例代碼按要求,

function clearDirectory() { 

    if (sessionStorage.platform.toLowerCase() == "android") { 
     window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemDirSuccess, fail); 
    } else { 
     //for ios 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemDirSuccess, fail); 
    } 
}; 

function onFileSystemDirSuccess(fileSystem) { 
    var entry = ""; 
    if (sessionStorage.platform.toLowerCase() == "android") { 
     entry = fileSystem; 
    } else { 
     //for ios 
     entry = fileSystem.root; 
    } 
    entry.getDirectory("Folder_Name", { 
      create: true, 
      exclusive: false 
     }, 
     function(entry) { 
      entry.removeRecursively(function() { 
       console.log("Delete successful !!!"); 
      }, fail); 
     }, getDirFail); 
}; 

function getDirFail(error) { 
    alert("getDirFail - " + error.code); 
}; 

function fail(error) { 
    alert("fail - " + error.code); 
}; 

文件創建:

function writeFile() { 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError); 
      } else { 
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError); 
      } 

     }  

     function onError(e) { 
      alert("onError"); 
     }; 

     function onFileSystemSuccess(fileSystem) { 
      var entry = ""; 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       entry = fileSystem; 
      } else { 
       entry = fileSystem.root; 
      } 
      entry.getDirectory("Folder_Name", { 
       create: true, 
       exclusive: false 
      }, onGetDirectorySuccess, onGetDirectoryFail); 
     }; 

     function onGetDirectorySuccess(dir) { 
      dir.getFile(filename, { 
       create: true, 
       exclusive: false 
      }, gotFileEntry, errorHandler); 
     }; 

     function gotFileEntry(fileEntry) { 
      // logic to write file in respective directory 
     }; 

     function errorHandler(e) { 
      // handle error 
     } 
+0

LocalFileSystem.PERSISTENT確實可以寫作文件,我會嘗試與resolveLocalFileSystemURL。你可以在你的代碼中發佈你的代碼,這將是偉大的 –

+0

@LeonardoDaCodinchi,已經發布了代碼在我的回覆中,請讓我知道它是否有幫助 – Gandhi

+0

這將刪除目錄,而不是文件當我嘗試getFile時,它會拋出這個錯誤'''無法讀取undefined'的屬性'getFile' –

0

也許是最好的,如果你使用插件與本機的功能,這將保存文件,他們應該被保存,你將被保證讀寫訪問權限。

您可以點擊此處查看:cordova-plugin-file

我不知道你要使用的代碼是什麼樣的設備。在該頁面中,您可以看到不同操作系統(Android,iOS,Blackberry等)的所有不同文件系統路徑。

+1

我很想知道爲什麼downvote,實際正確的答案使用這個插件常量..在原來的問題沒有..誰downvoted,我想知道爲什麼,我只是想幫助,而且我認爲我沒有錯誤得到一個downvote。歡呼:) – Ariel

+0

你的問題最終在低質量的帖子隊列中,因爲它有被標記爲「僅鏈接答案」的風險,僅供參考(不,我沒有降低你的評分,所以我不能幫助你) –

+0

真棒!感謝您的解釋。更好的質量爲下一個答案:) – Ariel