• Martes 16 de Abril de 2024, 20:20

Autor Tema:  Eliminar ficheros  (Leído 737 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Eliminar ficheros
« en: Sábado 12 de Diciembre de 2009, 16:24 »
0
Código: C#
  1.  
  2. /* Escriu un programa que busqui en una carpeta ( i subcarpetas ) tots els fitxers amb mida 0 bytes.
  3. Una vegada fet això ha de mostrar quants s'han trobat i un per un fer aquesta pregunta :
  4.  
  5. "Vols eliminar el fitxer #####.### ? (Si,No,Cap,Tots) ?"
  6.  
  7. L'opció "Cap" significa no fer res amb els que queden,
  8. l'opció "Tots" significa eliminar tots els que queden.
  9.  
  10. Nota : Els fitxers s'eliminen amb el mètode File.Delete(path) */
  11.  
  12.  
  13. using System;
  14. using System.Collections.Generic;
  15. using System.IO;
  16.  
  17. public class Fitxers
  18. {
  19.     public static void Main()
  20.     {
  21.         string dire;
  22.        
  23.         Console.WriteLine("Introdueix la direcció de la carpeta:");
  24.         dire=Console.ReadLine();
  25.        
  26.         while (Directory.Exists(dire) == false)//para saber si el directorio existe
  27.         {
  28.             Console.WriteLine("Este directorio no existe, vuelve a escribirlon");
  29.             dire=Console.ReadLine();
  30.         }
  31.         fitxers(dire);
  32.        
  33.     Console.WriteLine("Presione una tecla para salir.");
  34.     Console.ReadKey();
  35.     }
  36.    
  37.     public static void fitxers(string dire)
  38.     {
  39.        
  40.         string[] dirs = Directory.GetDirectories(dire);
  41.         foreach(string d in dirs)
  42.         {
  43.             fitxers(d);
  44.         }
  45.        
  46.         string[] fils = Directory.GetFiles(dire);
  47.        
  48.         foreach (string f in fils)
  49.         {
  50.             dadesfi(f);
  51.         }
  52.     }
  53.     public static void dadesfi(string d )
  54.     {
  55.         Queue<string> cola = new Queue<string>();
  56.         FileInfo fi = new FileInfo (d);
  57.         long mida = fi.Length;
  58.         string res;
  59.            
  60.         if (mida != 0)
  61.         {
  62.             cola.Enqueue(d);
  63.             Console.WriteLine(d);
  64.         }
  65.         while ( cola.Count > 0 ) //Saber el numero de elementos de la cola.
  66.         {  
  67.             //Console.Clear();
  68.             bool cap=false;
  69.             string n = cola.Dequeue(); //Sacar de la cola elementos.
  70.            
  71.             Console.WriteLine("Vols Elimnar el fitxer {0} ?",n);
  72.             res=Console.ReadLine();
  73.            
  74.             if (res == "si")
  75.             {
  76.                 File.Delete(n);
  77.                 //Console.WriteLine("El fitxer s'ha eliminat correctament");
  78.             }
  79.             else if ( res == "no" )
  80.             {
  81.                 //Console.WriteLine("El fitxer no s'ha eliminat");
  82.             }
  83.             else if ( res == "cap")
  84.             {
  85.                 Console.WriteLine("Prueba cap");
  86.                 while ( cola.Count > 0 )
  87.                 {
  88.                     Console.WriteLine(n);
  89.                     n = cola.Dequeue();
  90.                 }
  91.                 Console.WriteLine("No s'ha eliminat cap fitxer");
  92.                 //break;
  93.             }
  94.             else if ( res == "tots")
  95.             {
  96.                 Console.WriteLine("Prueba tots");
  97.                 while ( cola.Count > 0 )
  98.                 {
  99.                     File.Delete(n);
  100.                     n = cola.Dequeue();
  101.                 }
  102.                 Console.WriteLine("S'han eliminat tots els fitxers");
  103.             }
  104.             else
  105.                 Console.WriteLine("No has escrit la paraula correcta");
  106.            
  107.         }
  108.     }
  109. }
  110.  
  111.  

Tengo un problema a la hora de eliminar tots o cap.
Cuando escribo tots no me deberia volver a preguntar si quiere eliminar el siguiente fichero,sino eliminarlos ya todos, y me lo vuelve a preguntar.
Lo mismo pasa con el cap q no deberia preguntarme si quiero eliminar el siguente, sino no eliminar ninguno.