Получить последнее созданное имя файла в каталоге - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть папка, содержащая аудио- и текстовые файлы

Мне нужно получить последний созданный текстовый файл и путь к аудиофайлу без зацикливания в папке или без использования изменяемого массива и порядка с использованием измененных данных

любая идея

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Есть два решения:

  1. либо у вас есть нет полной информации о файлах в папке заранее - тогда вам придется просмотреть их и проверить дату изменения.
  2. или у вас есть контроль над всеми вещами, которые попадают в эту папку с самого начала - вы можете сохранить предпочтение, в котором хранится URL-адрес последнего файла.

Реализация для цикла:

NSString *documentsDirectory = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] path];
NSArray *docFileList = [[NSFileManager defaultManager] subpathsAtPath:documentsDirectory];
NSEnumerator *docEnumerator = [docFileList objectEnumerator];
NSString *docFilePath;
NSDate *lastModifiedDate = [NSDate dateWithTimeIntervalSince1970:0];
NSString *lastModifiedFilePath = @"";

while ((docFilePath = [docEnumerator nextObject])) {
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:docFilePath];
    NSDictionary *fileAttributes = [[NSFileManager defaultManager]  attributesOfItemAtPath:fullPath error:nil];
    NSDate currentModifiedDate = [fileAttributes fileModificationDate];

    if (lastModifiedDate < fileModificationDate) {
        fileModificationDate = lastModifiedDate;
        lastModifiedFilePath = fullPath;
    }
}

return lastModifiedFilePath;
0 голосов
/ 16 февраля 2012

Другой вариант, когда вы скачиваете файл, в то время, когда вам нужно управлять файлом .plist, который автоматически генерируется, и это последнее значение выбирает и оправдывает имя последнего загружаемого файла.

показать здесь один учебникдля этого.Следующий код используется для загрузки аудиофайла и добавления динамически создаваемого .plist

NSString *strAudioURL=@"Your sound ";

    // check first locally exists or not
    NSString *strPathToAudioCache=[NSString stringWithFormat:@"%@/%@",
                                   [(NSArray*)NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],
                                   AudioFolder];

    NSDictionary *dOfAudios=[NSDictionary dictionaryWithContentsOfFile:strPathToAudioCache];

    if([dOfAudios valueForKey:strAudioURL]) {
        [APP_DEL initAndPlayMovie:[NSURL fileURLWithPath:[dOfAudios valueForKey:strAudioURL]] andViewController:self];
    } else {
        NSURL *audioURL = [NSURL URLWithString:strAudioURL];
        NSString *strPathToDownload=[NSString stringWithFormat:@"%@/%@",[(NSArray*)NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0],
                                     [strAudioURL lastPathComponent]];

        if(!self.rqstForAudio || [self.rqstForAudio isFinished]) {
            self.rqstForAudio=[ASIHTTPRequest requestWithURL:audioURL];
            [self.rqstForAudio setDelegate:self];
            [self.rqstForAudio setAllowResumeForFileDownloads:YES];
            [self.rqstForAudio setCachePolicy:ASIUseDefaultCachePolicy];
            [self.rqstForAudio setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
            [self.rqstForAudio setDidFailSelector:@selector(failedToLoad:)];
            [self.rqstForAudio setDidFinishSelector:@selector(finishedLoading:)];
            [self.rqstForAudio setDownloadCache:[ASIDownloadCache sharedCache]];
            [self.rqstForAudio setDownloadDestinationPath:strPathToDownload];
            [self.rqstForAudio startAsynchronous];
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...