IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

compression de dossiers


Sujet :

VC++ .NET

  1. #21
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est juste pour que ca fasse joli à l'execution, c'est l'indentation

  2. #22
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    en fait moi pour l'instant j'ai crée une fonction CompDir qui compresse un repertoire où dedans il y a que des fichiers .

    franchement je suis perdu dans le code
    où est ce qu'elles sont affichées les listes des répertoires et des fichiers ?
    à l'aide des ?
    dans ce cas je peux remplacer "Console::WriteLine" par ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CompressDir(String ^dirSource, String ^ dirDestination)

  3. #23
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut je suis perdu !!!!
    le code ca serait quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    static void WriteFileEntries(String^ folder)
    {
     
    	StringBuilder^ tab = gcnew StringBuilder(String::Empty);
     
    	// Afficher les dossiers présents et leur contenu par récursivité
    	array<System::String ^>^ subdirs = Directory::GetDirectories(folder);
    	// SI le dossier contient des sous-dossiers
    	if (subdirs->Length != 0)
    	{
    		for each (String^ s in subdirs)
    		{CompressDir(tab->ToString() + Path::GetFileName(s), String ^ dirDestination)
     
     
    			WriteFileEntries(s);
    		}
    	}
    	// Afficher les noms des fichiers présents
    	array<System::String ^>^ files = Directory::GetFiles(folder);
    	// SI le dossier contient des fichiers
    	if (files->Length != 0)
    	{
    		for each (String^ s in files)
    			CompressDir(tab->ToString() + Path::GetFileName(s), String ^ dirDestination));
    	}
    }
    par contre j'ai une question est ce qu'il affiche les sous-sous répertoires ???

  4. #24
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ben teste, tu verras bien

  5. #25
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut comment faire quand il plus qu'un seul sous repertoire dans le meme niveau?
    ca marche pas
    par contre j'ai reussi mtnt à compresser un repertoire mais à condition qu'il y ait un seul sous repertoire dans chaque niveau

    je sais pas comment faire quand c'est 2 ou plus ???

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    private : String ^path;
    	private : String ^pathnew;
    	public  : String ^file;
    	public  :array<String ^> ^ files;
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     
    				 array<String ^> ^ directories;
    				CompressDir(textBox1->Text, textBox2->Text);
     
     
    				 directories = Directory::GetDirectories(path);
     
     
    				while(directories->Length != 0)
    				 {
    					for each (String ^dir in directories)
    					{
    						String ^u= dir->Substring(path->Length);
    						DirectoryInfo^ di = Directory::CreateDirectory(pathnew+u+"compressed");
    						String ^dirnew=pathnew+u+"compressed";
     
    						CompressDir(dir,dirnew);
    						directories = Directory::GetDirectories(dir);
     
     
    					}
     
    				 }
     
     
    			 }
     
    void CompressDir(String ^dirSource, String ^ dirDestination)
    {
    path = dirSource;
    pathnew = dirDestination;
     
     
    	files = Directory::GetFiles(path);
    	DirectoryInfo^ di = Directory::CreateDirectory(pathnew);
     
    	for each (file in files)
    	{ 
    		String ^v= file->Substring(path->Length);
    		System::Windows::Forms::MessageBox::Show(v);
     
     
     
    		if (!compresserFichier(file, pathnew+v+".gz"))
    				Console::WriteLine("failure in compression");
     
     
    	}
    }

  6. #26
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    directories = Directory::GetDirectories(dir);
    au début je pointe sur le repertoire et apres je pointe sur le sous repertoire et je continue l'algorithme

    mais je sais pas faire quand il y a deux sous repertoires

    est ce que quelqu'un a une idée comment je peux faire ?

    merci d'avance

  7. #27
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut help help help!!!
    j'ai tout testé , pourtant je sens que je suis si près

    si quelqu'un a une idée ?

    merci

    Code :
    directories = Directory::GetDirectories(dir);
    au début je pointe sur le repertoire et apres je pointe sur le sous repertoire et je continue l'algorithme

    mais je sais pas faire quand il y a deux sous repertoires

    est ce que quelqu'un a une idée comment je peux faire ?

    merci d'avance

  8. #28
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut pour une fois je me répond
    j'ai réussi à faire une méthode "CompressDir"qui compresse un dossier D en un dossier Dcompressed et une autre qui decompresse , voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    void CompressDir(String ^dirSource, String ^ dirDestination)
    {
     
    	String ^file;
    	array<String ^> ^ directories;
    	array<String ^> ^ files;
     
    	String ^path = dirSource;
    	String ^pathnew = dirDestination;
     
     
    	files = Directory::GetFiles(path);
    	DirectoryInfo^ di = Directory::CreateDirectory(pathnew);
     
    	for each (file in files)
    	{ 
    		String ^v= file->Substring(path->Length);
     
    		if (!compresserFichier(file, pathnew+v+".gz"))
    				Console::WriteLine("failure in compression");
    	}
     
     
    	directories = Directory::GetDirectories(path);
     
    	for each (String ^dir in directories)
    	{
    		String ^u= dir->Substring(path->Length);
    		System::Windows::Forms::MessageBox::Show("u "+u);
     
    		String ^dirnew=pathnew+u+"compressed";
    		System::Windows::Forms::MessageBox::Show("pathnew "+pathnew);
     
    		CompressDir(dir,dirnew);
    	}
    }
    void DecompressDir(String ^dirSource, String ^ dirDestination)
    {
     
    	String ^file;
    	array<String ^> ^ directories;
    	array<String ^> ^ files;
     
    	String ^path = dirSource;
    	String ^pathnew = dirDestination;
     
     
    	files = Directory::GetFiles(path);
    	DirectoryInfo^ di = Directory::CreateDirectory(pathnew);
     
    	for each (file in files)
    	{ 
    		String ^v= file->Substring(path->Length);
    		int i = v->Length;
    		i = i-3;
    		String ^v1 = v->Substring(0,i);
     
    	System::Windows::Forms::MessageBox::Show("v1 "+v1);
     
    		if (!decompression(file, pathnew+v1))
    				Console::WriteLine("failure in compression");
    	}
     
     
    	directories = Directory::GetDirectories(path);
     
    	for each (String ^dir in directories)
    	{
    		String ^u= dir->Substring(path->Length);
     
     
    		String ^dirnew=pathnew+u+"decompressed";
     
     
    		DecompressDir(dir,dirnew);
    	}
    }
     
    	private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    				 DecompressDir(textBox1->Text, textBox2->Text);
     
     
    			 }

  9. #29
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    j'ai réussi à compresser n fichiers en un fichier
    et j'ai mis dans le début du fichier : un String ou il y a :

    le nombre de fichier
    nom fichier
    sa taille
    nom fichier1
    sa taille 1
    nom fichier2
    sa taille 2
    .
    .
    .
    nom fichier n
    sa taille n

    voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    6
    c:\\mydirr\a0.txt
    5324
    c:\\mydirr\b.txt
    4992
    c:\\mydirr\b1.txt
    4992
    c:\\mydirr\b2.txt
    4992
    c:\\mydirr\c0.txt
    5238
    c:\\mydirr\c1.txt
    5238
    donc pour decompresser, je bloque sur un point:

    comment récuperer le int qui me donne le nombre des fichiers ?

Discussions similaires

  1. [Débutant][C#] Compression de dossier de manière récurssive
    Par LordProgz dans le forum Windows Forms
    Réponses: 10
    Dernier message: 12/01/2010, 14h55
  2. Compression de dossiers avec Abbrevia
    Par Badrouta dans le forum Delphi
    Réponses: 4
    Dernier message: 27/01/2007, 09h45
  3. [Windows] Compresser un dossier en .tgz
    Par Nicotendo dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 18/12/2006, 14h15
  4. Compresser un dossier avec Compress::Zlib
    Par mobscene dans le forum Modules
    Réponses: 1
    Dernier message: 17/11/2006, 22h13
  5. compresser un dossier
    Par kevain_09 dans le forum VBScript
    Réponses: 3
    Dernier message: 07/09/2006, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo