HTML5ファイルAPIの使用FileReader.readAsBinaryString()を使用してファイルのバイナリ文字列表現を取得できます。画像の場合、これは返されるかもしれません: ""ØØÿàJFIFHHÿExifMM* bj(1r2i¤HHAdobePhotoshop CS Windows2006:07:12 15:24:47ÿÿ... "Objective-Cを使用して、ファイル。HTML5ファイルAPIをエミュレートするObjective-c readAsBinaryString()
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、それは、WebKitの範囲内であるWebCore、内にあるライン252内にあること。
をなぜ[::データのエンコーディングNSUTF8StringEncoding [NSStringのはalloc] initWithData]を返す'てみませんか?バッファリングを邪魔しないように保存します。 – Abizern
アビザン、私がそれをするとき、私はまだ出力として 'ÿØÿ'を得る。私は残りの部分に何が起こっているのか分かりません。実際に、あなたが上記のものをコピーすると、私はnullになります。しかし、私がNSASCIIにエンコーディングを変更すると...私はちょうどそれらの4文字です。 – LDK