конвертировать .zip файл в NSData - PullRequest
2 голосов
/ 08 октября 2010

Эй, правильно ли инициализировать NSData с помощью zip-файла? Я хочу преобразовать 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

Может кто-нибудь указать на мои ошибки, пожалуйста. Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 08 октября 2010

Почему так? NSFileManager сделает это за вас:)

[[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:nil];

Однако это работает только для локальных файлов - если вы хотите скопировать файл с сервера, вам нужно взглянуть на NSURLConnection , чтобы загрузить данные, а затем NSData writeToFile: atomically: метод чтобы сохранить содержимое в файловой системе ( найдено здесь .)

1 голос
/ 08 октября 2010

PK - это ожидаемый результат.
Первые 2 символа в каждом zip-файле - это PK. Затем есть некоторые непечатаемые символы и в какой-то момент после них появляется символ со значением 0
Если вы создаете NSString из NSData, все значения до первого 0-значения принимаются во внимание.

НИКОГДА преобразование двоичных данных в строку NSString.

...