无法从文件系统中删除.zip文件

时间:2016-02-17 14:16:48

标签: ios objective-c macos nsfilemanager

无法从文件系统中删除.zip文件。

错误:

NSError *error;
BOOL deleted = [[NSFileManager defaultManager] removeItemAtPath:[DocumentDirectory stringByAppendingPathComponent:[UserDefaults stringForKey:kNCSIOfflineDataFileName]] error:&error];
if (!deleted) {
    DebugLog(@"%s %@", __PRETTY_FUNCTION__, error);
}

代码:

NSError *error;
    BOOL deleted = [[NSFileManager defaultManager] removeItemAtPath:[UserDefaults stringForKey:kNCSIOfflineDataFilePath] error:&error];
    if (!deleted) {
        DebugLog(@"%s %@", __PRETTY_FUNCTION__, error);
    }

验证路径: enter image description here

2 个答案:

答案 0 :(得分:4)

NSUserDefaults中存储包含应用文档文件夹绝对路径的文件路径是一个非常糟糕的主意。

原因如下:

  1. 应用的UUID会在更新时更改。
  2. iOS将在更新期间迁移用户默认值。
  3. 您加载旧的绝对值,它不再指向文件。
  4. 而是仅在文档文件根目录后存储值,并使用NSSearchPathForDirectoriesInDomains每次构建完整路径。

答案 1 :(得分:0)

在通过file:///或URL访问文件之前,我遇到了类似的问题。

我建议的最好的事情是通过字符串变量访问文档目录路径,使用

附加字符串
    stringByAppendingPathComponent:(NSString *)

构建表示文件的字符串。然后使用NSFileManager的

删除
    removeItemAtPath:(NSString *)