Question

Je souhaite lire le contenu d'un fichier de bibliothèque d'éléments dans iOS

NSFileHandle fileHandleForReadingFromUrl utilisant l'url de la ressource defaultRepresentation semble toujours renvoyer 0x0 ...

Je continuerai de chercher une solution en attendant.

MODIFIER:

On dirait la réponse de Anomie pourrait être ce que je veux:

NSUInteger length = [representation getBytes:bytes fromOffset:0 length:[representation size] error:&error];

Était-ce utile?

La solution

Pour les fichiers plus volumineux, vous voudrez probablement copier via une boucle pour lire X octets en morceaux, sinon vous risquez d'épuiser la mémoire de l'appareil.

NSUInteger chunkSize = 100 * 1024;
uint8_t *buffer = malloc(chunkSize * sizeof(uint8_t));

ALAssetRepresentation *rep = [myasset defaultRepresentation];
NSUInteger length = [rep size];

NSFileHandle *file = [[NSFileHandle fileHandleForWritingAtPath: tempFile] retain];

if(file == nil) {
    [[NSFileManager defaultManager] createFileAtPath:tempFile contents:nil attributes:nil];
    file = [[NSFileHandle fileHandleForWritingAtPath:tempFile] retain];
}

NSUInteger offset = 0;
do {
    NSUInteger bytesCopied = [rep getBytes:buffer fromOffset:offset length:chunkSize error:nil];
    offset += bytesCopied;
    NSData *data = [[NSData alloc] initWithBytes:buffer length:bytesCopied];
    [file writeData:data];
    [data release];
    } while (offset < length);

[file closeFile];
[file release];
free(buffer);
buffer = NULL;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top