如何检索特定文件扩展名的文件的文件路径



我已经解压缩了一个文件并发送到我的文档目录:

[SSZipArchive unzipFileAtPath:path toDestination:destinationPath];

在解压缩的文件中将有5种不同类型的文件。我只想知道扩展名类型为".shp"的文件的路径和文件名。

我试过以下几种:

NSString *filePath = [[NSBundle mainBundle] pathForResource:destinationPath ofType:@"shp"];

之后,我想删除该文件夹中文件的所有内容。

有什么想法吗?提前谢谢。

首先,获取所有目录文件。

NSString *bundle = [[NSBundle mainBundle] bundlePath];
NSFileManager * aMan = [NSFileManager defaultManager];
NSArray * allFiles = [aMan contentsOfDirectoryAtPath: bundle];

然后可以使用以下方法之一过滤所需的扩展:

NSPredicate *filter = [NSPredicate predicateWithFormat:@"self ENDSWITH '.shp'"];
NSArray *filtered = [allFiles filteredArrayUsingPredicate:filter];

下一步-删除文件,循环过滤。但它看起来对我不好。
所以,我更喜欢这个:

NSError *error;
for (NSString * elem in allFiles) {
if ([[elem pathExtension] isEqualToString:@"shp"])
[aMan removeItemAtPath:[bundle stringByAppendingPathComponent:elem] error:&error];

希望它能帮助

您可以使用NSFileManager删除文件:

NSFileManager * fileManager = [[NSFileManager alloc]init];
[fileManager removeItemAtPath:@"your path" error:nil];

您可以通过以下方式完成:

NSURL *baseURL = [NSURL URLWithString:destinationPath];
NSDirectoryEnumerator* filesEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:baseURL includingPropertiesForKeys:@[] options:0 errorHandler:nil];
NSURL* fileURL;
while (fileURL = [filesEnumerator nextObject]) {
NSString* file = [fileURL lastPathComponent];
BOOL match = [file containsString:@".shp"];
if (match) {
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:nil];
}
}

如果它能解决问题,请告诉我。。

最新更新