Regrouper les fichiers selon leur type

Soyez le premier à donner votre avis sur cette source.

Vue 2 919 fois - Téléchargée 591 fois

Description

Slt;
le problème: sur mon pc j'ai un desordre total ( des dossiers dans lesquels je retouve des fichiers 'word', et 'pdf' en même temps.
j'ai donc décider de créer un petit soft qui prendra un dossier en paramètre (le dossier désordonné) et qui selon les extension choisies,
créera un dossier avec les fichiers pour chaque tpe sélectionné.
l'ennuie c'est que on logiciel ne me copie pas tus les fichiers et aussi jai des erreurs sur la longueur du chemin de fichier et autre
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Win32; // OpenFileDialog
using Microsoft.VisualBasic.FileIO;
namespace WindowsFormsApplication3
{
    public partial class Main_form : Form
    {
        public Dictionary<String, String> extensionsList;
        public List<string> listeDossiers=new List<string>();
        public Main_form()
        {
            InitializeComponent();
        }
        #region addsousdossier
        private void AddSousDossiersSousFichiers(TreeNode NodePass, TreeView tree)
        {
            try
            {
                foreach (string dossier in System.IO.Directory.GetDirectories(NodePass.FullPath))
                {
                   listeDossiers.Add(new System.IO.DirectoryInfo(dossier).FullName);
                    TreeNode childNode = new TreeNode(new System.IO.DirectoryInfo(dossier).Name);
                    NodePass.Nodes.Add(childNode);
                    AddSousDossiersSousFichiers(childNode, tree);
                }

                foreach (string fichier in System.IO.Directory.GetFiles(NodePass.FullPath))
                {
                    NodePass.Nodes.Add(System.IO.Path.GetFileName(fichier));
                    string chemincomplet = NodePass.FullPath + @"\" + System.IO.Path.GetFileName(fichier);
                    FileInfo mon_fichier = new FileInfo(chemincomplet);
                    string extension = mon_fichier.Extension.ToString();
                    if (ExtList.FindStringExact(extension) == -1)
                    {
                        ExtList.Items.AddRange(new object[] { extension });
                    }
                }

            }
            catch {/*Accès refusé*/}
        }
#endregion
        private void sourceClick(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                txSource.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        private void cibleClick(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                txCible.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        private void fction_classer(object sender, EventArgs e)
        {
            if (!(txSource.Text == ""))
            {
                TreeNode initialNode;
                string initialDirectory = txSource.Text;
                treeView1.Nodes.Add(initialDirectory);
                initialNode = treeView1.Nodes[0];
                AddSousDossiersSousFichiers(initialNode, treeView1);
            }
            else
            {
                MessageBox.Show("veuillez choisir le dossier à traiter");
            }
        }
        private void rangement(string dosRecup)
        {
            foreach (string path in listeDossiers)
            {
                foreach (string fichier in System.IO.Directory.GetFiles(path))
                {
                    //MessageBox.Show(fichier);
                    string chemincomplet = path + @"\" + System.IO.Path.GetFileName(fichier);
                    FileInfo mon_fichier = new FileInfo(chemincomplet);
                    string extension = mon_fichier.Extension.ToString();
                    if (this.extensionsList.ContainsValue(extension))
                    {
                        string fichierS = chemincomplet;
                        string fichierD = dosRecup + @"dossier de type " + extension +@"\"+ System.IO.Path.GetFileName(fichier);
                       // MessageBox.Show(fichierS+"       ---yes");
                       // MessageBox.Show(fichierS + "    " + fichierD);
                        if (!System.IO.Directory.Exists(dosRecup + @"dossier de type " + extension)) { System.IO.Directory.CreateDirectory(dosRecup + @"dossier de type " + extension); }
                        System.IO.File.Copy (fichierS, fichierD, true);
                    }
                }
            }
        }
        #region test
        private void test()
        {
            TreeNode ParentNode = new TreeNode();
            ParentNode.Text = "RootNode";
            ParentNode.ForeColor = Color.Black;
            ParentNode.BackColor = Color.White;
            ParentNode.ImageIndex = 0;
            ParentNode.SelectedImageIndex = 0;
            treeView1.Nodes.Add(ParentNode);           //Root node in TreeView

            TreeNode ChildNode1 = new TreeNode();
            ChildNode1.Text = "Child 1";
            ChildNode1.ForeColor = Color.Black;
            ChildNode1.BackColor = Color.White;
            ChildNode1.ImageIndex = 0;
            ChildNode1.SelectedImageIndex = 0;
            ParentNode.Nodes.Add(ChildNode1);         //Child node (parent is ParentNode)

            TreeNode ChildNode2 = new TreeNode();
            ChildNode2.Text = "Child 2";
            ChildNode2.ForeColor = Color.Black;
            ChildNode2.BackColor = Color.White;
            ChildNode2.ImageIndex = 0;
            ChildNode2.SelectedImageIndex = 0;
            ParentNode.Nodes.Add(ChildNode2);         //Child node (parent is ParentNode)

            TreeNode ChildNode3 = new TreeNode();
            ChildNode3.Text = "Child 3";
            ChildNode3.ForeColor = Color.Black;
            ChildNode3.BackColor = Color.White;
            ChildNode3.ImageIndex = 0;
            ChildNode3.SelectedImageIndex = 0;
            ParentNode.Nodes.Add(ChildNode3);         //Child node (parent is ParentNode)

            TreeNode ChildNode4 = new TreeNode();
            ChildNode4.Text = "Child 4";
            ChildNode4.ForeColor = Color.Black;
            ChildNode4.BackColor = Color.White;
            ChildNode4.ImageIndex = 0;
            ChildNode4.SelectedImageIndex = 0;
            ParentNode.Nodes.Add(ChildNode4);         //Child node (parent is ParentNode)

            TreeNode NextChildNode1 = new TreeNode();
            NextChildNode1.Text = "Next Child 1";
            NextChildNode1.ForeColor = Color.Black;
            NextChildNode1.BackColor = Color.White;
            NextChildNode1.ImageIndex = 1;
            NextChildNode1.SelectedImageIndex = 1;
            ChildNode3.Nodes.Add(NextChildNode1);         //Child node (parent is ChildNode3)

            TreeNode NextChildNode2 = new TreeNode();
            NextChildNode2.Text = "Next Child 2";
            NextChildNode2.ForeColor = Color.Black;
            NextChildNode2.BackColor = Color.White;
            NextChildNode2.ImageIndex = 1;
            NextChildNode2.SelectedImageIndex = 1;
            ChildNode3.Nodes.Add(NextChildNode2);         //Child node (parent is ChildNode3)

            treeView1.ExpandAll();
        }
        #endregion
        private void classement(object sender, EventArgs e)
        {
            GetExtensions();
            if (!(txCible.Text==""))
            {
            string cible_dir_path = txCible.Text + @"Dossier de recuperation";
            if (!System.IO.Directory.Exists(cible_dir_path))
            {
                System.IO.Directory.CreateDirectory(cible_dir_path);
            }
            for (int index = 0; index < this.ExtList.Items.Count; index++)
            {
                if (this.ExtList.GetItemCheckState(index) == CheckState.Checked)
                {
                    string cible_dir_path1 =cible_dir_path + @"dossier de type " + ExtList.Items[index].ToString().Trim();
                    System.IO.Directory.CreateDirectory(cible_dir_path1);
                }
            }
            MessageBox.Show("fin création des dossiers de récupération");
            rangement(cible_dir_path);
            }
            else
            {
                MessageBox.Show("veuillez choisir un dossier cible pour la création du dossier de recupération");
            }

        }


        private void GetExtensions()
        {
            Dictionary<String, String> extensions = new Dictionary<string, string>();
            for (Int32 index = 0; index < this.ExtList.Items.Count; index++)
            {
                if (this.ExtList.GetItemCheckState(index) == CheckState.Checked)
                {
                    extensions.Add(index.ToString(),ExtList.Items[index].ToString().Trim());
                    //MessageBox.Show(ExtList.Items[index].ToString().Trim());
                }
                this.extensionsList=extensions;
            }
        }
    }
}



je voudrais que les bonnes volontés m'aide à améliorer ce logiciel dont je pense que beaucoup auront besoin pour grouper les fichiers selon leur extension...
merci

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.