删除IOS应用程序时如何删除文件?

Posted

技术标签:

【中文标题】删除IOS应用程序时如何删除文件?【英文标题】:How to delete the file while removing the IOS app? 【发布时间】:2015-08-26 10:02:37 【问题描述】:

我在移动应用程序中对文件存储有特定要求。 我正在创建一个文件来将一些数据存储到其中,稍后将检索到这些数据。

android 中,如果我将文件存储在以下位置,则在从 android 设备中删除应用程序时文件将被删除。

Android/data//files/test.txt

问题:

ios 设备中,我无法获得这种文件路径 删除APP时存储要删除的文件。

谁能帮我在哪里可以存储文件以在删除APP时自动删除?

【问题讨论】:

您可以使用文档目录来存储您的文件。当应用程序被删除时,它也会自动删除您的文件。 感谢@paddy,但是它将如何成为我的应用程序特定的?我怎么知道它可以删除文档目录中的文件? 【参考方案1】:

在 iOS 上,您的应用无法真正访问文件系统。它在沙盒中工作,该沙盒仅适用于您的应用程序。这意味着如果您将文档保存在 Documents 目录中,例如,您并没有真正将其保存在 THE Documents 目录中,而是将其保存在应用程序的 Documents 目录中。只有您的应用才能访问该应用,一旦您的应用被卸载,操作系统就会删除您应用沙箱中的所有项目以及应用本身。

这就是为什么当你访问 Document 目录时,你不是访问一个常量目录,而是向操作系统询问要使用的目录的具体地址。该目录的物理地址可能会在您的应用程序的安装(或升级)之间发生变化:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"fileName.txt"];

【讨论】:

感谢您的回答。但是如何在 CORDOVA 文件系统插件中完成呢? 我个人在本地开发应用程序,所以 Cordova 不是我的专长,但也许这会有所帮助:***.com/questions/10945375/… 感谢您的回答@chonch 嗨,我找到了解决方案并在下面给出了答案。但你的回答对我有帮助。【参考方案2】:

这是我在 Android 和 IOS 设备上研究和测试后的最终解决方案。

第一步:根据平台区分文件路径如下:

 device.platform.toLowercase();
         FileUtility.prototype.getFilepath = function()    
if(device.platform.toLowercase == "ios")       
return "gsmData.txt";   
        else if(device.platform.toLowercase == "android")

       return
     "Android/data/test.app.com/files/testData.txt";     ;

以上代码将根据设备返回“ios”或“android”。

Step2:使用上面函数获取的路径创建文件

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
 readFileSystem, failureCallBack);
     function readFileSystem(fileSys)
         fileSys.root.getFile(getFilepath(), create: false,exclusive:false, function(fileEntry)
                              fileEntry.remove(successCallBack,failureCallBack);

                              , failureCallBack);
     

在IOS设备中,如果你用你的APP创建文件,那么当你从IOS设备中删除APP时,该文件将被自动删除。

但是在 Android 中,如果你像我上面提到的那样将它们存储在与 APP 相关的文件夹中,创建的文件将被删除。

希望对你有帮助:)

【讨论】:

但是在 Android 中,如果您像我上面提到的那样将它们存储在与 APP 相关的文件夹中,创建的文件将被删除..你的意思是我将数据保存在我的代码文件夹中?【参考方案3】:

每当用户或系统删除应用程序时,存储在其小文件系统沙箱中的任何内容都将随应用程序自动删除。使用返回的数组的第一个对象 NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 获取您自己的文档目录的路径,您可以在其中写入文件。当应用程序从设备中删除时,整个目录将被删除。

【讨论】:

以上是关于删除IOS应用程序时如何删除文件?的主要内容,如果未能解决你的问题,请参考以下文章

iphone/ios sdk:如果应用程序更新,如何删除/清除用户文件

iOS上传后如何删除压缩视频?

如何从帐户中删除 IOS 团队配置文件?

如何删除ios应用程序的tmp目录文件?

如何从应用程序中删除 ios Today 扩展

如何取消 AFdownloadrequest 操作而不保留以前的进度(删除临时文件) iOS