получить путь к файлу, созданному ios

#ios #filenames #filepath #nsbundle

#iOS #имена файлов #путь к файлу #nsbundle

Вопрос:

У меня есть следующий код для создания файла:

 NSString *name = @"dtmf-received.aif";

//create file
NSString *cachesFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
fileName= [cachesFolder stringByAppendingPathComponent:name];
  

Мне нужно получить путь к созданному файлу. Следующий код не работает. Чего мне не хватает?

 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"dtmf-received.aif"
                                                         ofType:@""];
  

Ответ №1:

Каталог caches и каталог app bundle отличаются. Просто используйте один и тот же код в обоих местах, и он будет работать правильно.

Комментарии:

1. что значит использовать тот же код? Не могли бы вы добавить пример?

2. Первая часть кода верна, поэтому используйте ее везде.

3. Я изменил с помощью этой NSString* Путь к файлу = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, ДА) lastObject] Путь к источнику:@»dtmf-received.aif» OfType:@»aif»]; и теперь у меня сбой.

4. Я не понимаю, почему вы находите это таким сложным. Этот код не совпадает с первым фрагментом кода, не так ли? Используйте тот же код.

5. поэтому я могу использовать путь к файлу в качестве имени файла. хорошо, спасибо!

Ответ №2:

 Here it is an example how you can play your aif file:


-(void) playSound {
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"dtmf-received" ofType:@"aif"];
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], amp;soundID);
    AudioServicesPlaySystemSound (soundID);
    //[soundPath release];
    NSLog(@"soundpath retain count: %d", [soundPath retainCount]);
}
  

Комментарии:

1. Спасибо! не могли бы вы также рассказать мне, как я могу создать пустой файл размером 10 562 байта, например, в ios? Этот файл будет открыт с помощью stream open и с помощью stream write я добавлю некоторые данные

2. Это точный размер, который вам нужен?

Ответ №3:

Попробуйте это:

         NSString *fileLocation = [[NSBundle mainBundle] pathForResource:@"dtmf-received" ofType:@"aif"];
        NSURL *vedioURL =[NSURL fileURLWithPath:fileLocation];
        MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:vedioURL];
        [self presentMoviePlayerViewControllerAnimated:videoPlayerView];
        [videoPlayerView.moviePlayer play];
  

Комментарии:

1. Спасибо! не могли бы вы также рассказать мне, как я могу создать пустой файл размером 10 562 байта, например, в ios? Этот файл будет открыт с помощью stream open и с помощью stream write я добавлю некоторые данные.

Ответ №4:

Вам нужно установить .aif в строку ‘Type:’

 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"dtmf-received.aif"
                                                     ofType:@""];
  

Попробуйте это->

 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"dtmf-received"
                                                     ofType:@"aif"];
  

И проверьте раздел проекта «Копировать ресурсы пакета», ваш файл должен быть здесь

Копирование пакета восстанавливается

Комментарии:

1. Спасибо за ваш реплей. Мне также нужно создать dtmf-received.aif. Не могли бы вы помочь мне создать файл в основном пакете?

2. перетащите файл в «Копировать ресурсы пакета»

3. как я могу создать файл определенного размера в ios?