-1

我在文件上传时使用此代码

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        filePath1 = [documentsDirectory stringByAppendingPathComponent:@"myVoice.caf"];// specify your audioname
        NSLog(@"***************************");
        NSLog(@"%@",filePath1);


        NSDictionary *fileAttributes1 = [fileManager attributesOfItemAtPath:filePath1 error: NULL];
        NSNumber *fileSize1 = [fileAttributes1 objectForKey:NSFileSize];
        NSLog(@"%@",fileSize1);
         NSLog(@"***************************");


        NSString *file2 = [[NSBundle mainBundle] pathForResource:filePath1 ofType:@"caf"];
        NSData *file1Data = [[NSData alloc] initWithContentsOfFile:file2];

        NSLog(@"**************&&&&&&&&&&&&&&&*************");
        NSLog(@"%@",file1Data);
        NSLog(@"**************&&&&&&&&&&&&&&&**************");

================================================

现在 o/p 是

2012-11-30 16:39:39.719 Varsity[4802:1a303] /Users/Esolz/Library/Application Support/iPhone Simulator/5.1/Applications/FAED7832-392C-4BFE-9A9B-D18B749FDC9B/Documents/myVoice.caf
2012-11-30 16:39:39.719 Varsity[4802:1a303] 542752
2012-11-30 16:39:39.719 Varsity[4802:1a303] ***************************
2012-11-30 16:39:39.719 Varsity[4802:1a303] **************&&&&&&&&&&&&&&&*************
2012-11-30 16:39:39.719 Varsity[4802:1a303] (null)
2012-11-30 16:39:39.719 Varsity[4802:1a303] **************&&&&&&&&&&&&&&&**************

===============================

实际上主要问题在于这两行

NSString *file2 = [[NSBundle mainBundle] pathForResource:filePath1 ofType:@"caf"];
NSData *file1Data = [[NSData alloc] initWithContentsOfFile:file2];

无法转换文件。我哪里出错了

4

1 回答 1

1

该文件位于文档目录中的应用程序沙箱内,并且不存在于 NSBundle 中。简单来说,它不会像包含图像等那样添加到您的项目中。因此,当您尝试从项目包中获取带有文档目录路径的文件数据时,您将数据设为 null。尝试这个NSData *file1Data = [[NSData alloc] initWithContentsOfFile:filePath1];

于 2012-11-30T11:21:23.687 回答