2010-06-03 4 views
0

J'ai un fichier X octets. Et je veux le compresser en bloc de taille 32Kb, par exemple. Y a-t-il des bibliothèques que je peux faire?Fichier de compression

J'ai utilisé Zlib pour Delphi mais je peux juste compresser un fichier complet dans un nouveau fichier compressé.

Tranks beaucoup, Pedro

+0

Quel langage de programmation avez-vous l'intention de coder? –

+0

Depuis que vous mentionnez Delphi, je suppose que vous ciblez Windows. Je ne suis pas sûr que cela corresponde à vos besoins, mais NTFS prend en charge la compression de fichiers transparente dès la première utilisation. Il divise déjà les fichiers compressés en petits blocs afin que les performances d'accès aléatoire ne souffrent pas beaucoup. –

+0

Probablement Delphi. –

Répondre

1

Pourquoi ne pas utiliser un en-tête simple pour déterminer les limites de bloc? Considérez ceci:

  1. Lire quantité fixe de données à partir de l'entrée dans une mémoire tampon (par exemple 32 KiB)
  2. Compresser que le tampon avec un « fraîchement créé » deflate courant (sous-jacent algorithme de compression de ZLIB).
  3. Ecrire taille compressée à flux de sortie
  4. écriture des données compressées au flux de sortie
  5. Passez à l'étape 1 jusqu'à la fin de fichier.

Plus:

  1. Vous pouvez décompresser un bloc même dans la mode multi-thread.
  2. Corruption de données limitée uniquement au bloc corrompu. Le reste des données peut être restauré.

Moins:

  1. Vous perte la plupart des informations contextuelles (similitudes entre les données). Ainsi, vous aurez un taux de compression inférieur.
  2. Vous avez besoin d'un peu plus de travail.