Используя API файлов HTML5, я могу получить представление файла в двоичной строке, используя FileReader.readAsBinaryString ().Для изображения это может вернуть: "" ÿØÿàJFIFHHÿáExifMM * bj (1r2i¤ÐHHAdobe Photoshop CS Windows2006: 07: 12 15:24:47 ÿÿ ... ". Используя Objective-C, я пытаюсь получить то же представлениефайл.
NSData *data = [NSData dataWithContentsOfFile:path];
unsigned char *aBuffer = malloc([data length]);
[data getBytes: aBuffer length:[data length]];
return [[NSString alloc] initWithBytes:aBuffer length:[data length] encoding:NSASCIIStringEncoding];
Выше есть две проблемы (по крайней мере), есть утечка памяти и вывод только 'ÿØÿà'. Как получить полную строку и избежать утечки памяти?
Редактировать, когда я делаю это:
NSData *data = [NSData dataWithContentsOfFile:path];
return [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding];
Я получаю точно такой же вывод.
WebKit делает следующее (на C ++):
m_stringResult = String(static_cast<const char*>(m_rawData->data()), m_bytesLoaded);
Это в FileReaderLoader.cpp, строка 252. Он находится в WebCore, который находится в WebKit.