当前位置: 代码迷 >> Iphone >> iOS开发中,将word,excel,pdf等文档的二进制流保存到本地(iPhone或iPad)的有关问题
  详细解决方案

iOS开发中,将word,excel,pdf等文档的二进制流保存到本地(iPhone或iPad)的有关问题

热度:37   发布时间:2016-04-25 05:52:18.0
iOS开发中,将word,excel,pdf等文档的二进制流保存到本地(iPhone或iPad)的问题
在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);
    }
}


这是直接写文件的一种方式,其他逻辑自己处理下。
  相关解决方案