Objective C - 删除目录中的文件,而不删除 zip 中的文件

Objective C - Delete files within a directory, without deleting files inside a zip

如何删除目录中的文件而不删除该目录中 zip 中的相同文件?

所以以我的文档为例:

包含log.txt、message.txt、button.txt、log.zip。

在 log.zip 中包含 log.txt、message.txt、button.txt。

当我尝试做这样的事情时:

NSArray *zipFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSDocumentDirectory error:&error];
for (int i = 0; i < Files.count; i++) {
    id myArrayElement = [Files objectAtIndex:i];
    if ([myArrayElement rangeOfString:@"Button"].location !=NSNotFound || [myArrayElement rangeOfString:@"message"].location !=NSNotFound || [myArrayElement rangeOfString:@"log"].location !=NSNotFound) {
            id myArrayElement = [Files objectAtIndex:i];
            //Clean up the files in that specified directory.
            NSFileManager *fileManager = [NSFileManager defaultManager];
            NSString *filePath = [zipDirectory stringByAppendingPathComponent:myArrayElement];
            BOOL success = [fileManager removeItemAtPath:filePath error:&error];
            if (success) {
                NSLog(@"Successfully cleaned up files in user specified directory.");
            }
            else
            {
                NSLog(@"Could not delete file -:%@ ",[error localizedDescription]);
            }
    }
}

它将删除我的 .zip 内的文件以及 zip 外巧合名称相同的文件。我只想删除 .zip 文件之外的 3 个文件,而不是 .zip 文件内的文件。

您正在测试包含 "button"、"msg" 或 "log" 的文件路径。路径 "log.txt" 和 "log.zip" 都包含 "log" 所以你也删除了你的 zip 文件。

您没有说清楚要删除的内容,所有非 zip 文件?所有 .txt 文件?名称遵循特定模式的文件?文件也包含在同一文件夹的 ZIP 中(需要在您的代码中访问 ZIP 内容)?

如果它只是 .txt 文件,您可以测试 filePath.extension@"txt",或者如果您希望保留 ZIP 文件,测试它不是 @"zip" 等。如果它名称是否遵循某种模式考虑 NSRegularExpression.

HTH