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

How to delete the file while removing the IOS app?

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

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

Android/data//files/test.txt


问题:

在 IOS 设备中,我找不到这种文件路径 存储删除APP时删除的文件

谁能帮我把删除APP时自动删除的文件放在哪里?

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

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

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

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

这是我在 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";    } };

以上代码将 return "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相关文件夹中,创建的文件将被删除。

希望对您有所帮助:)