使用cordova插件在iOS中删除应用程序的临时目录

Posted

技术标签:

【中文标题】使用cordova插件在iOS中删除应用程序的临时目录【英文标题】:delete temp directory of an app in iOS using cordova plugin 【发布时间】:2016-04-18 11:49:18 【问题描述】:

我正在使用 ionic 框架在 ios 的 Library 目录中的应用程序中存储一些图像。是否可以使用 Cordova-plugin-file 和 Cordova-plugin-file 传输删除同一目录?

谁能帮忙?

我下载图片的代码是:

downloadImage: function(url, fileName) 
        var deferred = $q.defer();

        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) 
                fs.root.getDirectory(
                    LOCAL_STORAGE_KEYS.app, 
                        create: true
                    ,
                    function(dirEntry) 
                        // console.log(arguments);
                        dirEntry.getFile(
                            fileName, 
                                create: true,
                                exclusive: false
                            ,
                            function(fe) 
                                console.log(arguments);

                                var p = fe.toURL();
                                console.log("In service the url path:", p);
                                fe.remove();
                                var ft = new FileTransfer();
                                console.log('File Transfer instance:', ft);
                                ft.download(
                                    encodeURI(url),
                                    p,
                                    function(entry) 
                                        console.log('In service the entry callback:', entry);
                                        if (entry && entry.toURL) 
                                            deferred.resolve(entry.toURL());
                                         else 
                                            console.log('No entry:', arguments);
                                            deferred.resolve();
                                        
                                    ,
                                    function(err) 
                                        console.log('Getting rejected:', err);
                                        deferred.reject(err);
                                    ,
                                    false,
                                    null
                                );
                            ,
                            function() 
                                deferred.reject(new Error('get file  failed'));
                            
                        );
                    
                );
            ,
            function() 
                deferred.reject(new Error('get directory failed'));
            );

        return deferred.promise;
        

【问题讨论】:

你要删除的目录叫什么名字? 【参考方案1】:

这里是使用cordova文件插件删除目录及其内容的示例代码sn-p:

function clearDirectory() 
    if (ionic.Platform.isandroid()) 
        window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemDirSuccess, fail);
     else 
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemDirSuccess, fail);
    

    function onFileSystemDirSuccess(fileSystem) 
        var entry = "";
        if (ionic.Platform.isAndroid()) 
            entry = fileSystem;
         else 
            entry = fileSystem.root;
        
        entry.getDirectory("DIRECTORY_TO_DELETE", 
                create: true,
                exclusive: false
            ,
            function(entry) 
                entry.removeRecursively(function() 
                    console.log("Remove Recursively Succeeded");
                , fail);
            , getDirFail);
    

    function getDirFail(error) 
        navigator.notification.alert("Error");
    ;

    function fail(error) 
        navigator.notification.alert("Error");
    ;

【讨论】:

不走运..!是iOS平台的吗? @甘地 @alyson_216 适用于 android 和 ios。在两个平台上都经过尝试和测试。

以上是关于使用cordova插件在iOS中删除应用程序的临时目录的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 写入 WWW 目录 (iOS)

cordova无法删除ios插件的解决办法

如何在 IOS cordva 应用程序中添加 cordova 插件?

在混合 Cordova iOS 应用程序中使用 iosrtc 插件的问题

如何在适用于 ios 7 的科尔多瓦 3.9.2 中删除 index.html

cordova、Firebase、FCM 插件 - 在 iOS 的通知栏中不显示通知