Segmentation d'un fichier

05:25 modifié dans API AppKit #1
Bonjour,

Je souhaite segmenter un fichier zip. J'ai d'abord cherché dans son man puis dans gzip, pax, et tous les autres mais je n'ai trouvé que zipsplit qui visiblement marche un peu comme il veut sur des fichiers moyen (quelques dizaines de MB).

Connaà®ssez vous d'autres méthodes pour segmenter un fichier "proprement" ?
Si je me lance dans mon propre découpeur, il y aurait un problème pour la gestion des fichiers ? Un fichier est bien vu comme un tas de données pour tous et aucun logiciel (finder) ou protocole (mise en ftp, etc) ne rajoute une "couche" pouvant corrompre la "désegmentation" ?

merci.

Réponses

  • aranaudaranaud Membre
    05:25 modifié #2
    Je pense que ceci devrais d'aider.
  • 05:25 modifié #3
    Je m'en souvenais ;)

    Ca veut dire qu'il n'y pas d'autre moyen ?  :(
  • aranaudaranaud Membre
    05:25 modifié #4
    J'avais faire une recherche mais je n'ai rein trouver d'autre qui puisse le faire. :-\\
    Mais, c'est sur que une manière plus simple serait la bien venue.
  • AliGatorAliGator Membre, Modérateur
    05:25 modifié #5
    Vu ta question je n'ai pas bien compris si tu voulais
    - absolument faire ça par le code
    - Segmenter un fichier ZIP de sorte qu'il soit reconnu tout seul comme un fichier en plusieurs segments (et que l'utilitaire qui décompressera le ZIP devra retrouver ses petits ?)
    - Ou juste découper le fichier, sans faire en sorte qu'ils restent encore liés.

    Si tu ne souhaites pas le faire par code, il existe des utilitaires pour faire ça.
    - Tu as des découpeurs qui scindent un fichier en fichiers ".par"
    - Tu as la commande terminal "split" qui découpe un fichier en plusieurs morceaux.
    D'ailleurs tu peux toujours faire appel à  split via un NSTask si tu veux le faire par code ;)
  • 05:25 modifié #6
    Oui, au départ c'est un fichier zip que je voulais segmenter (comme on peut faire avec un image disque) mais le zip n'est pas visible pour l'utilisateur (enfin par directement) donc si je dois recomposer le zip depuis mon soft ce n'est pas un problème même si ça me fait un peu chier. Je pensais qu'on pouvait le faire facilement avec les zip.

    Je vais chercher les .par (ça me dit qq chose mais j'avais du oublier). Split c'est effectivement ça ! (gogol que je suis) Mais visiblement il ne fait pas mieux que ma méthode maison sur un point : l'opéaration d'écriture qui consomme des centaines de Mo pour un fichier de 250Mo... et ça c'est pas bien !

    <br />	NSInputStream *R=[[NSInputStream alloc] initWithFileAtPath:path];<br />	[R open];<br />	int i=0;<br />	unsigned long long offset=0;<br />	unsigned int r,dec=(10*1024*1024);<br />	void *data=(void*)malloc(dec);<br /><br />	offset=dec;<br />	while (r=[R read:data maxLength:dec])<br />	{<br />		NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];<br />		<br />		NSString *pFile=[path stringByAppendingFormat:@&quot;%d&quot;,++i];<br />		offset+=dec;<br /><br />/*		NSOutputStream *W=[[NSOutputStream alloc] initToFileAtPath:pFile append:NO];<br />		[W open];<br />		[W write:data maxLength:r];<br />		[W close];<br />		[W release];*/<br /><br /><br /><br />/*		int Wd=open ([pFile fileSystemRepresentation],O_WRONLY | O_CREAT | O_EXCL, S_IREAD | S_IWRITE);<br />	<br />		NSData *theData=[[NSData alloc] initWithBytes:data length:r];<br />		NSFileHandle *W=[[NSFileHandle alloc] initWithFileDescriptor:Wd closeOnDealloc:YES];<br />		<br />		[W seekToFileOffset:0];<br />		[W writeData:theData];<br />		[W synchronizeFile];<br />		[W closeFile];<br />		<br />		[theData release];<br />		[W release];*/<br /><br /><br />/*		FILE *W=fopen([pFile fileSystemRepresentation],&quot;w&quot;);<br />		fwrite(data,1,r,W);<br />		fclose(W);<br />*/<br /><br />	<br />		//NSData *W=[[NSData alloc] initWithBytes:data length:r];<br />		//[W writeToFile:pFile atomically:NO];<br />		//[W release];<br />	<br />		NSLog(@&quot;write r:%d - i:%d&quot;,r,i);<br />		<br />		[pool release];<br />	}<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.