在iOS开发中,有如下方式创建文件(夹),并向文件中写入数据:
//获取文件路径
NSString *tmpDirectory = NSTemporaryDirectory();
NSString *filePath=[tmpDirectory stringByAppendingPathComponent : @"test.txt" ];
//文件内容
NSString *content = @"hello world!";
NSData * data = [content dataUsingEncoding:NSUTF8StringEncoding];
//创建含有内容的文件
NSFileManager * manager = [NSFileManager defaultManager];
[manager createFileAtPath:filePath contents:data attributes:nil];
我的问题是:
从服务端获取到了word,excel,pdf等文档的二进制流(注意:二进制流中不仅仅含有文档中的内容,还含有文档本身),转化为字符串为:0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD/////(此处省略xx字),
如果将这些数据按照上面的方法创建文件的话,文件中的内容为:0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD/////(此处省略xx字),
请问各位大神,如何才能将这个二进制流保存成为原先的文档,非常感谢!
------解决方案--------------------
-(void)writeToFile:(NSData *)data
{
NSString *filePath=[NSString stringWithFormat:@"%@",_fileName];
if([[NSFileManager defaultManager] fileExistsAtPath:filePath] == NO)
{
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
}
FILE *file = fopen([_fileName UTF8String], [@"ab+" UTF8String]);
if(file != NULL)
{
fseek(file, 0, SEEK_END);
int readSize = [data length];
fwrite((const void *)[data bytes], readSize, 1, file);
fclose(file);
}
else
{
NSLog(@"open %@ error!", _fileName);
}
}
这是直接写文件的一种方式,其他逻辑自己处理下。