NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/audio.mp3",documentsDirectory];
NSURL *audioPathURL = [NSURL fileURLWithPath:filePath];
NSFileManager *filemanager = [[NSFileManager alloc]init];
if ([filemanager fileExistsAtPath:filePath])
{
AVAudioFile *audioFile = [[AVAudioFile alloc] initForReading:audioPathURL error:&err];
}这不能读取音频文件,它返回audioFile nil。对于相同的代码,当我从NSBundle传递url时,比如
NSString *path = [[NSBundle mainBundle] pathForResource:@"Audio" ofType:@"mp3"];
NSURL *pathURL = [NSURL fileURLWithPath : path]; 它工作得很好,任何建议都可以。谢谢
发布于 2016-04-22 02:19:58
问题可能是用于将文件名追加到path的"/“。在下面的更改中尝试
NSString *filePath = [NSString stringWithFormat:@"%@audio.mp3",documentsDirectory];或者尝试下面的替代方案:
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"audio.mp3"];发布于 2016-04-22 13:03:09
NSBundle类用于查找应用程序捆绑包中的内容,但Documents目录在捆绑包之外,因此生成路径的方式不适用于Documents目录。
如下所示进行尝试:
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"audio.mp3"];
NSURL *audioPathURL = [NSURL fileURLWithPath:filePath];
NSFileManager *filemanager = [[NSFileManager alloc]init];
if ([filemanager fileExistsAtPath:filePath])
{
AVAudioFile *audioFile = [[AVAudioFile alloc] initForReading:audioPathURL error:&err];
}https://stackoverflow.com/questions/36774225
复制相似问题