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
如何删除目录中的文件而不删除该目录中 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