Macpurge (nouveaux algos pour les fichiers ... made in mac)

Description

Dans son ancienne version, MacPurge supprimait tous les fichiers du disque dur commençant par "._" ou se nommant ".DS_Store".
Par, je ne sais quel hasard, une personne nommerai un fichier important "._quelquechose", l'ancienne version le supprimerait.

Après avoir examiné ces fichiers générés, tous les fichiers ayant "._" contiennent de l'octet 8 au 16 la suite de caractères donnant : "Mac OS X".

J'ai donc rajouté une fonction permettant de définir si le fichier est créé par Mac OSX ou non.

Aussi, j'ai embelli le logiciel en le sortant du mode console pour lui donner une fenetre et un ensemble de commandes.

Toute la source de Mac Purge V2 se trouve dans le Zip.

Enfin, je vous présente dans la source, les algorithmes les plus importants du logiciel.

Source / Exemple :


public void DelMacFiles(DirectoryInfo[] dirinf)
        {
            NbFolderScan = NbFolderScan + dirinf.Length;
            foreach (DirectoryInfo d in dirinf)
            {
                try
                {
                    if (d.Name == ".Spotlight-V100")
                        d.Delete(true);
                    else
                    {
                        if (d.Name == ".Trashes")
                            d.Delete(true);
                        else
                        {
                            DelMacFiles(d);
                            DelMacFiles(d.GetDirectories());
                        }
                    }
                }
                catch (Exception)
                {
                    LIST_Erreur.Items.Add("Acces Impossible sur : " + d.FullName);
                }
            }
        }

        public void DelMacFiles(DirectoryInfo dir)
        {
            try
            {
                FileInfo[] files = dir.GetFiles();

                NbFilesScan = NbFilesScan + files.Length;

                int nbfic = files.Length;

                for (int i = 0; i < nbfic; i++)
                {

                    if (files[i].Name.Substring(0, 2) == "._" && ProcStat.IsMacFile(files[i]))
                    {
                        NbFilesDel++;
                        files[i].Delete();
                    }
                    else
                    {
                        if (files[i].Name == ".DS_Store")
                        {
                            NbFilesDel++;
                            files[i].Delete();
                        }
                    }

                }

            }
            catch (Exception)
            {
                LIST_Erreur.Items.Add("Acces Impossible sur : " + dir.FullName);
            }
        }

public static bool IsMacFile(FileInfo f)
        {
            string m = "Mac OS X";
            FileStream fs = f.OpenRead();
            byte[] b = new byte[8];

            fs.Position = 8;
            fs.Read(b, 0, 8);

            fs.Flush();
            fs.Close();

            return (Encoding.Default.GetString(b) == m);

        }

Conclusion :


Créé avec VS 2008, mais utilisant le DotNET 2.0

Merci de me faire part de vos réaction par rapport à cette nouvelle version.

PS : Le screen présenté à été pris lors de l'examen de mon disque dur externe (USB 2.0) et cet examen, malgré l'ajout d'une vérification en plus n'a duré que 2s.

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.