cs_Squale76
Messages postés4Date d'inscriptionsamedi 30 juin 2007StatutMembreDernière intervention18 décembre 2007
-
21 oct. 2007 à 11:51
cs_Squale76
Messages postés4Date d'inscriptionsamedi 30 juin 2007StatutMembreDernière intervention18 décembre 2007
-
25 oct. 2007 à 07:03
Bonjour à tous,
Je developpe depuis peu avec SharpDevelop 2.0 et je voudrais compresser un fichier unique avec la dll SharpZipLib v0.85.4.369.
Le
fichier .zip est bien créé avec le bon nom et au bon endroit, la taille
de ce fichier est bien plus petite que le fichier non compressé mais
lorsque j'ouvre ce fichier avec un dézippeur quelconque "UltimateZip"
ou autre, la taille du fichier est soit -1ko ou plus de 4000000ko et sa
decompression par ces dezippeurs est très longue.
Si vous avez des idées sur le problème, aidez moi.....
Voici le code utilisé (basé sur le code de Yohann MARTEL):
namespace
Compression
{
/// Classe de compression Zip avec ICSharpCode.SharpZipLib.dll
public class
Zip
{
string
StrPathFichier;
// on stocke le chemin + fichier
cs_Squale76
Messages postés4Date d'inscriptionsamedi 30 juin 2007StatutMembreDernière intervention18 décembre 2007 25 oct. 2007 à 07:03
En essayant plusieurs choses, j'ai testé ce code et ça marche :
public
static
void
Zip
(
string
SrcFile
,
string
DstFile
,
int
BufferSize
)
// SrcFile : Chemin et nom du fichier source
// DstFile : Chemin et nom du fichier Destination (Zip)
// BufferSize : Taille du buffer de compression
{<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
try
{
Crc32 objCrc32
=
new
Crc32
();
ZipOutputStream zos
;
zos
=
new ZipOutputStream
(
File
.
Create
(
DstFile
));
// your zipfile
FileStream strmFile
=
File
.
OpenRead
(
SrcFile
);
byte
[]
abyBuffer
=
new
byte
[
Convert
.
ToInt32
(
strmFile
.
Length
)];
strmFile
.
Read
(
abyBuffer
,
0
,
abyBuffer
.
Length
);
ZipEntry objZipEntry
=
new ZipEntry
(
Path
.
GetFileName
(
SrcFile
));
objZipEntry
.
DateTime
=
DateTime
.
Now
;
objZipEntry
.
Size
=
strmFile
.
Length
;
strmFile
.
Close
();
objCrc32
.
Reset
();
objCrc32
.
Update
(
abyBuffer
);
objZipEntry
.
Crc
=
objCrc32
.
Value
;
zos
.
PutNextEntry
(
objZipEntry
);
zos
.
Write
(
abyBuffer
,
0
,
abyBuffer
.
Length
);
zos
.
Finish
();
zos
.
Close
();
}
catch
(
Exception ex
)
{
MessageBox
.
Show
(
ex
.
ToString
());
}
}
Reste un probleme, j'ai testé sur différents fichiers et une taille de 11Mo tout est OK mais pour un fichier de 79 Mo, j'ai un plantage de l'application.
Comment peut on faire pour que le "
File
.