Как удалить временный каталог файлов из приложения iOS? - PullRequest
3 голосов
/ 12 марта 2012

Я использовал код для удаления файлов временных каталогов при использовании устройства.

-(void) clearAllTempFiles {
    NSString *path = NSTemporaryDirectory();
    if ([path length] > 0)
    {
        NSError *error = nil;  
        NSFileManager *fileManager = [NSFileManager defaultManager];

        BOOL deleted = [fileManager removeItemAtPath:path error:&error];

        if (deleted != YES || error != nil)
        {

        }
        else{
            // Recreate the Documents directory
            [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error];
        }

    }
}

это не работает нормально? это правильный код для удаления файлов из временного каталога?

Пожалуйста, помогите мне?

Ответы [ 2 ]

6 голосов
/ 12 марта 2012

Вы можете получить имя каталога tmp на своем Mac, используя это в своем коде:

Код:

(void)cacheDirectory {

    NSString *tempPath = NSTemporaryDirectory();

    NSLog(@"Temp Value = %@", items);
}

Вызовите метод из любого места.

Это вернет имя папки tmp, затем в finder do (cmd-shift-G) и вставит ответ, полученный из окна консоли.

Следующая команда очистит каталог TMP, используемый имитатором.

Код:

NSString *tempPath = NSTemporaryDirectory();
NSArray *dirContents = [[NSFileManager defaultManager] directoryContentsAtPath:tempPath];
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"]];

NSFileManager *fileManager = [NSFileManager defaultManager];

if (onlyJPGs) { 
    for (int i = 0; i < [onlyJPGs count]; i++) {
    NSLog(@"Directory Count: %i", [onlyJPGs count]);
    NSString *contentsOnly = [NSString stringWithFormat:@"%@%@", tempPath, [onlyJPGs objectAtIndex:i]];
    [fileManager removeItemAtPath:contentsOnly error:nil];
}

Приведенный выше код удаляет только файлы JPG из каталога, поэтому, если вы хотитеочистите что-нибудь еще, затем исправьте это.

4 голосов
/ 10 апреля 2014

Я нашел простой

NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
for (NSString *file in tmpDirectory) {
    [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
}
...