如何使用Cordova删除文件?

时间:2015-10-25 05:41:33

标签: cordova ibm-mobilefirst

注意:此问题正在重新发布,因为无论出于何种原因,原始海报决定在提供并接受答案后将其删除。因此,我再次添加它以保存知识

原始问题:

我正在努力了解cordova appache的crud操作是如何工作的。 我在worklight中创建了一个删除函数,如下所示:

的index.html:

<a href="#" class="btn large" onclick="deleteAudio();">Delete the local MP3 file</a><br/>

main.js:

function deleteAudio() {
  var entry= "file:///data/data/com.TestApp/files/4638.mp3";
  function success(entry) {
    alert("Removal succeeded");
 }

  function fail(error) {
    alert('Error removing file: ' + error.code);
 }

// remove the file
entry.remove(success, fail);
}

尝试删除时,不会删除代码。我收到了这个错误:

10-11 09:54:14.419: E/NONE(1821): Uncaught Exception: Uncaught TypeError: Object file:///data/data/com.TestApp/files/4638.mp3 has no method 'remove' at (compiled_code):68

我可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:5)

您不能简单地拥有一个包含文件路径的变量,并在其上使用.remove方法。对于所有意图和目的,它只是一个变量,里面有一些字符串。这基本上就是错误所说的。它不知道.remove是什么。

只有在您获得对文件系统的访问权限后,

.remove才可用 以下作品:

var entry= "file:///data/data/com.TestApp/files/4638.mp3";

window.resolveLocalFileSystemURL (entry, 
    function (fileEntry) { 
        fileEntry.remove(
            function () { 
                alert('File is removed.'); 
            }, 
            function (error) {
                alert('Unable to remove file.');
            }
        ); 
    } 
); 

由于这继续the previously asked question,以下是完整的示例:

<强>的index.html

<button id="downloadMP3">Download MP3 file</button><br/>
<button id="playMP3" disabled>Play MP3 file</button><br/>
<button id="stopMP3" disabled>Stop MP3 file</button><br/>           
<button id="deleteMP3" disabled>Delete MP3 file</button>

<强> main.js

var mediaFile;
var mediaPlayback;

function wlCommonInit(){
    $("#downloadMP3").click(downloadMP3);
    $("#playMP3").click(playMP3);
    $("#stopMP3").click(stopMP3);    
    $("#deleteMP3").click(deleteMP3);
}

function downloadMP3() {
    var fileTransfer = new FileTransfer();
    var remoteFilePath = encodeURI("http://www.noiseaddicts.com/samples_1w72b820/4638.mp3");
    var localDownloadPath = cordova.file.dataDirectory + '4638.mp3';

    alert ("Downloading...");
    fileTransfer.download(
        remoteFilePath,
        localDownloadPath,
        function(successResponse) {
            mediaFile = successResponse.toURL();
            // Remove "file://" so file could be found and later played.
            mediaFile = mediaFile.replace('file://','');
            $('#playMP3').prop('disabled', false);
            $('#stopMP3').prop('disabled', false);            
            $('#deleteMP3').prop('disabled', false);
        },
        function(errorResponse) {
            alert (JSON.stringify(errorResponse));
        }
    );
}

function playMP3() {
    mediaPlayback = new Media(
            mediaFile,
            function() {
                alert("Finished playing audio file.");
            },
            function() {
                alert("Failed playing audio file.");
            }
        );

    mediaPlayback.play();
}

function stopMP3() {
    mediaPlayback.stop();
}

function deleteMP3() {
    // Put back "file://" since it is needed in order to be found.
    mediaFile = "file://" + mediaFile;

    window.resolveLocalFileSystemURL(mediaFile, 
        function (fileEntry) { 
            fileEntry.remove(
                function () { 
                alert('File is removed.'); 
            }, 
            function (error) {
                alert('Unable to remove file.');
            }); 
        } 
    ); 
}