Bonjour,
merci pour votre aide , mais j'ai déja commencé à travailler avec une autre solution mais j'ai rencontré des probléme car je travaille sur Visual Studio 2005.
voici notre code :
using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.Data;
using
System.IO;
using
ICSharpCode.SharpZipLib.Zip;
// voici le message d'erreur après compilation : Error 1 The type or namespace name 'ICSharpCode' could not be found (are you missing a using directive or an assembly reference?) D:\Documents and Settings\a\Bureau\essay1\WindowsApplication1\WindowsApplication1\Form1.cs 9 7 WindowsApplication1
namespace
WindowsApplication1
{
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void button1_Click(object sender, System.EventArgs e)
{
if ( openFileDialog1.ShowDialog() == DialogResult.Cancel )
{
return;
}
else
{
// On vide la listview
listView1.Items.Clear();
// On récupère, dans un tableau, la liste des fichiers sélectionnés
string [] files = openFileDialog1.FileNames;
// On les ajoute au listview
foreach( string file in files )
{
ListViewItem ItemFile = new ListViewItem(file);
listView1.Items.Add(ItemFile);
ItemFile = null;
}
}
}
private
void button2_Click(object sender, System.EventArgs e)
{
// S'il n'y a pas de fichiers à zipper
if ( listView1.Items.Count < 1 )
{
// Erreur
MessageBox.Show("Pas de fichiers à zipper", "Erreur");
}
else
{
if ( saveFileDialog1.ShowDialog() == DialogResult.Cancel )
{
return;
}
else
{
try
{
// On récupère le nom de l'archive
string nomzip = saveFileDialog1.FileName;
// Flux qui va créer l'archive en fonction de l'algo
ZipOutputStream ZipStream = new ZipOutputStream(File.Create(nomzip));
// On indique le niveau de compression
// 0 -> Compression minimale
// 9 -> Compression maximale
ZipStream.SetLevel(9);
// Pour chaque fichier contenu dans le ListView
for ( int i = 0; i <= listView1.Items.Count - 1; i++)
{
// On récupère le chemin + nom du fichier
string file = listView1.Items[i].Text;
// Stream qui va lire le fichier
FileStream fs = File.OpenRead(file);
// Tableau de byte, de la taille du fichier à lire
byte[] buffer = newbyte[fs.Length];
// Lecture
fs.Read(buffer, 0, buffer.Length);
// On crée une nouvelle entrée dans l'archive
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
// On ajoute la nouvelle entrée
ZipStream.PutNextEntry(entry);
ZipStream.Write(buffer, 0, buffer.Length);
}
// On ferme le flux
ZipStream.Finish();
ZipStream.Close();
MessageBox.Show("Fichier " + nomzip + " créé avec succès", "Succès");
}
catch(Exception Ex)
{
MessageBox.Show("Erreur lors de la création de l'archive\nErreur : " + Ex.Message, "Erreur");
}
}
}
Merci.