最好的解决方案是使用一些 Firefox API(如果存在)来确定配置文件 ID。但我不太了解 Firefox 内部结构,不知道这是否可行。不过,我确实知道单个用户可以拥有多个配置文件,这是需要考虑的事情。
此外,您(坦率地说,还有其他响应者)对目录结构做出了很多不能保证成立的假设。您还假设一切正常,这当然不能保证磁盘操作。考虑到这些考虑,我提交了以下内容,它相当彻底地使用了 Foundation 提供的抽象。它还在适当的地方使用更现代的 NSURL:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *appDirErr;
NSURL *appSupportDir = [fileManager URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:NO
error:&appDirErr];
if (appSupportDir) {
NSURL *firefoxDir = [appSupportDir URLByAppendingPathComponent:@"Firefox/Profiles"
isDirectory:YES];
NSError *profileErr;
NSArray *profileURLs = [fileManager contentsOfDirectoryAtURL:firefoxDir
includingPropertiesForKeys:nil
options:0
error:&profileErr];
if (profileURLs) {
for (NSURL *currentProfileURL in profileURLs) {
NSURL *removalURL = [currentProfileURL URLByAppendingPathComponent:@"places.sqlite"
isDirectory:NO];
NSError *removalErr;
if (! [fileManager removeItemAtURL:removalURL error:&removalErr]) {
NSLog(@"Error! %@", [removalErr localizedDescription]);
}
}
}
else {
NSLog(@"Error! %@", [profileErr localizedDescription]);
}
}
else {
NSLog(@"Error! %@", [appDirErr localizedDescription]);
}