Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2124 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Rechercher un fichier sur le disque "rapidement"

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Rechercher un fichier sur le disque "rapidement"

n°1321897
Arjuna
Aircraft Ident.: F-MBSD
Posté le 09-03-2006 à 15:14:03  profilanswer
 

Salut,
 
Alors voilà, j'ai un fichier "dtc.com" sur mon disque.
Mais je sais pas où il est.
Mon programme doit le trouver, afin de jouer avec des fichiers qui sont dans le même répertoire.
 
J'ai écrit ça :
 

Code :
  1. private string getWinmeuPath()
  2.  {
  3.   string path;
  4.   try
  5.   {
  6.    StreamReader iniFile = new StreamReader("path", Encoding.ASCII);
  7.    path = iniFile.ReadToEnd();
  8.    iniFile.Close();
  9.   }
  10.   catch (FileNotFoundException e)
  11.   {
  12.    path = string.Empty;
  13.   }
  14.   if (System.IO.File.Exists(path + winmeuFileName))
  15.   {
  16.    return path;
  17.   }
  18.   else
  19.   {
  20.    System.Management.ManagementClass FDiskClass = new System.Management.ManagementClass("Win32_LogicalDisk" );
  21.    System.Management.ManagementObjectCollection FDisks = FDiskClass.GetInstances();
  22.    foreach (System.Management.ManagementObject FDisk in FDisks)
  23.    {
  24.     if (System.Convert.ToUInt32(FDisk["DriveType"]) == (UInt32)EDiskType.LocalDisk)
  25.     {
  26.      this.progressBar2.Value = 0;
  27.      this.progressBar2.Update();
  28.      path = findFile((string)FDisk["Name"] + @"\", winmeuFileName);
  29.      if (path != string.Empty)
  30.      {
  31.       StreamWriter iniFileW = new StreamWriter("path", false, Encoding.ASCII);
  32.       iniFileW.Write(path);
  33.       iniFileW.Close();
  34.       return path;
  35.      }
  36.     }
  37.    }
  38.    return string.Empty;
  39.   }
  40.  }
  41.  public string findFile(string rep, string fileName)
  42.  {
  43.   DirectoryInfo fol = new DirectoryInfo(rep);
  44.   FileInfo fil = new FileInfo(rep + fileName);
  45.   if (fil.Exists)
  46.   {
  47.    return rep;
  48.   }
  49.   else
  50.   {
  51.    if (rep.Length == 3)
  52.    {
  53.     this.progressBar2.Value = 0;
  54.     this.progressBar2.Maximum = fol.GetDirectories().Length;
  55.    }
  56.    foreach (DirectoryInfo sfol in fol.GetDirectories())
  57.    {
  58.     if (sfol.FullName.Length > 50)
  59.     {
  60.      this.label5.Text = sfol.FullName.Substring(0, 3) + "..." + sfol.FullName.Substring(sfol.FullName.Substring(0, sfol.FullName.LastIndexOf(@"\" )).LastIndexOf(@"\" ));
  61.     }
  62.     else
  63.     {
  64.      this.label5.Text = sfol.FullName;
  65.     }
  66.     this.label5.Update();
  67.     if (rep.Length == 3)
  68.     {
  69.      this.progressBar2.Value++;
  70.      this.progressBar2.Update();
  71.     }
  72.     string path = findFile(sfol.FullName + @"\", fileName);
  73.     if (path != string.Empty)
  74.     {
  75.      return path;
  76.     }
  77.    }
  78.    return string.Empty;
  79.   }
  80.  }


 
Ca marche très bien.
Sauf que quand je sais pas déjà où il est, ça met 3 plombes à le trouver.
Et je vais faire tourner cette appli sur des vieux bouzins de quand ma grand-même avait des dents de lait, et donc faut que je trouve une solution qui va un peu plus vite...
 
En fait, dès que j'arrive dans un répertoire où y'a pas mal de trucs c'est d'une lenteur abominable. J'ai l'impression que "directoryinfo" doit directement charger la liste des fichiers à l'instanciation, ou une connerie comme ça, c'est pas possible :/
 
Et vu que le dossier d'install par défaut c'est "c:\winmeu", je suis certain de me pallucher tout le disque avant de trouver l'appli, donc ça a intéret à booster un peu :/
 
(bon, j'ai résolu une partie du problème en créant un fichier "path" qui contient le dernier chemin trouvé, ce qui me permet de ne faire cette recherche que la première fois. mais vu comme je connais les utilisateurs -caissières dans une chaîne de magasin- elles n'auront jamais la patience la première fois...)


Message édité par Arjuna le 09-03-2006 à 15:18:57
mood
Publicité
Posté le 09-03-2006 à 15:14:03  profilanswer
 

n°1340394
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-04-2006 à 11:37:24  profilanswer
 

Personne ne m'a jamais répondu :o
 
Alors, y'a une solution rapide pour rechercher de façon un fichier sur le disque ?
(sans passer par Textsearch évidement, c'est pas fiable, surtout pour trouver un EXE...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Rechercher un fichier sur le disque "rapidement"

 

Sujets relatifs
erreur de téléchargement de fichierOuverture d'un fichier avec commande shell
ouverture d'un fichier access sous excelignorer d'un fichier txt lors de la lecture
[C#/net & XML] Filtrer un fichier XMLfichier .odt indexé sur table mysql et en php
Creer et nommer un fichier avec une extension . txtInclusion dans un fichier XSP
Créer un fichier php en php! [résolu]Inclure un fichier html en retirant head/body
Plus de sujets relatifs à : [C#] Rechercher un fichier sur le disque "rapidement"


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR