FILE (C) Récupérer le chemin
Bonjour,
j'ai trouvé un code hyper intéressant sur internet, il permet de decompresser du .ZIP par exemple.. le problème c'est qu'il ne récupère pas le chemin du dossier/fichier une fois décompressé !
Comme je n'y connais rien du tout, j'aimerai qu'on m'éclaircisse un peu :
archivePath = lefichier.zip
command = @ditto -x -k - \$DESTINATION\""
Merci d'avance,
Louka.
j'ai trouvé un code hyper intéressant sur internet, il permet de decompresser du .ZIP par exemple.. le problème c'est qu'il ne récupère pas le chemin du dossier/fichier une fois décompressé !
Comme je n'y connais rien du tout, j'aimerai qu'on m'éclaircisse un peu :
<br />- (BOOL)_extractArchivePath:archivePath pipingDataToCommand:(NSString *)command<br />{<br /> // Get the file size.<br /> NSNumber *fs = [[[NSFileManager defaultManager] fileAttributesAtPath:archivePath traverseLink:NO] objectForKey:NSFileSize];<br /> if (fs == nil) { return NO; }<br /> <br /> // Thank you, Allan Odgaard!<br /> // (who wrote the following extraction alg.)<br /> <br /> long current = 0;<br /> FILE *fp, *cmdFP;<br /> sig_t oldSigPipeHandler = signal(SIGPIPE, SIG_IGN);<br /> if ((fp = fopen([archivePath UTF8String], "r")))<br /> {<br /> setenv("DESTINATION", [[archivePath stringByDeletingLastPathComponent] UTF8String], 1);<br /> if ((cmdFP = popen([command cString], "w")))<br /> {<br /> char buf[32*1024];<br /> long len;<br /> while((len = fread(buf, 1, 32 * 1024, fp)))<br /> { <br /> current += len;<br /> <br /> NSEvent *event;<br /> while((event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES]))<br /> [NSApp sendEvent:event];<br /> <br /> fwrite(buf, 1, len, cmdFP);<br /><br /> }<br /> pclose(cmdFP);<br /> }<br /> fclose(fp);<br /> <br /> <br /> } <br /> <br /> signal(SIGPIPE, oldSigPipeHandler);<br /> return YES;<br />}<br />
archivePath = lefichier.zip
command = @ditto -x -k - \$DESTINATION\""
Merci d'avance,
Louka.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le terminal me liste ensuite la liste de tous les fichiers contenus dans l'archive. Ce qui m'intéresse étant simplement le nom du dossier décompressé, je l'ai en début de chemin : "Roger" :P
Un coup de NSTask et NSPipe + NSFileHandle et je trouverai mon bonheur !
Personnellement, je n'avais rien compris à ta question.
.
Je voulais simplement savoir si avec le code que j'ai posté en premier, il y avait un moyen de récupérer le fichier de destination.
De toute façon il me reste un problème, c'est que mon NSPipe ne contient aucun data :crackboom:-
EDIT : c'est bon, j'ai rajouté setStandardError: et j'ai enfin quelque chose