从NSData中提取文件名

时间:2013-09-04 13:49:47

标签: ios

我正在使用蓝牙将文件发送到其他设备。发送的内容是NSData:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *myFilePath = [documentsDirectoryPath stringByAppendingPathComponent: [NSString stringWithFormat:@"%@.ext", button.titleLabel.text]];

NSData *Recording = [NSData dataWithContentsOfFile:myFilePath];

该文件是图像。收到的文件和视图都很好,但我想将它保存到文件目录中,其名称与之前的名称相同,即button.titleLabel.text。发送文件时,它始终具有名称。我怎么能得到它?

2 个答案:

答案 0 :(得分:1)

您需要将文件名作为单独的实体(可能是NSString或NSData)发送,或者,因为它是图像,您可以将文件名添加到EXIF数据中,尽管这并不容易。

答案 1 :(得分:1)

  • 您的代码

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *documentsDirectoryPath = [paths objectAtIndex:0];  
    NSString *myFilePath = [documentsDirectoryPath stringByAppendingPathComponent: [NSString stringWithFormat:@"%@.ext", button.titleLabel.text]];  
    NSData *Recording = [NSData dataWithContentsOfFile:myFilePath];
    
  • 制作NSDictionary并输入文件名和图像数据

    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjects:myFilePath,Recording  forKeys:@"fileName",@"imageData"];
    
  • 然后将字典转换为NSData,就像这样

    NSData *myData = [NSKeyedArchiver archivedDataWithRootObject:dict];
    

  • 收到数据后再次将数据转换为字典并提取imageData和filePath

    NSDictionary *myDictionary = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:myData];