嘿,用zip文件初始化NSData是否正确?我想将一个zip文件转换为NSData并用数据构造另一个文件(用简单的语言'复制')。我有以下代码:
NSURL *theFileUrl = [NSURL URLWithString: @"file://localhost/Users/xxx/Desktop/testZippedFile.zip"];
NSData *data = [NSData dataWithContentsOfURL: theFileUrl];
当我,NSLog(@"Data: %@", data)
,我确实得到了一些输出,但是当我尝试使用这些数据初始化NSString时,它不起作用:
NSString *str = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
`NSLog(@"String: %@", string)`
我将日志记录为:String: PK
请有人指出我的错误。 提前谢谢!
答案 0 :(得分:4)
为什么这样? NSFileManager将为您完成:)
[[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:nil];
但是,这仅适用于本地文件 - 如果要从服务器复制文件,则应查看NSURLConnection以加载数据,然后查看NSData的writeToFile:atomically:方法以保存文件系统的内容(found here。)
答案 1 :(得分:1)
PK 是您应该期望的输出 每个zip文件中的前2个字符都是PK。然后有一些不可打印的字符,在某些点之后有一个值为0的字符 如果从NSData创建NSString,则会考虑所有直到第一个0值的值。
永远将二进制数据转换为NSString。