如何删除目录中的文件而不删除该目录中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文件。
答案 0 :(得分:0)
您正在测试包含“button”,“msg”或“log”的文件路径。路径“log.txt”和“log.zip”都包含“log”,因此您也删除了您的zip文件。
您没有准确说出要删除的内容,所有非zip文件?所有.txt文件?名称遵循特定模式的文件?文件也包含在同一文件夹中的ZIP中(需要访问代码中的ZIP内容)?
如果它只是.txt文件,您可以测试filePath.extension
为@"txt"
,或者如果您希望保持ZIP文件测试不是@"zip"
等。如果是名称按照模式考虑NSRegularExpression
。
HTH