/* Escriu un programa que busqui en una carpeta ( i subcarpetas ) tots els fitxers amb mida 0 bytes.
Una vegada fet això ha de mostrar quants s'han trobat i un per un fer aquesta pregunta :
"Vols eliminar el fitxer #####.### ? (Si,No,Cap,Tots) ?"
L'opció "Cap" significa no fer res amb els que queden,
l'opció "Tots" significa eliminar tots els que queden.
Nota : Els fitxers s'eliminen amb el mètode File.Delete(path) */
using System;
using System.Collections.Generic;
using System.IO;
public class Fitxers
{
public static void Main()
{
string dire;
Console.WriteLine("Introdueix la direcció de la carpeta:");
dire=Console.ReadLine();
while (Directory.Exists(dire) == false)//para saber si el directorio existe
{
Console.WriteLine("Este directorio no existe, vuelve a escribirlon");
dire=Console.ReadLine();
}
fitxers(dire);
Console.WriteLine("Presione una tecla para salir.");
Console.ReadKey();
}
public static void fitxers(string dire)
{
string[] dirs = Directory.GetDirectories(dire);
foreach(string d in dirs)
{
fitxers(d);
}
string[] fils = Directory.GetFiles(dire);
foreach (string f in fils)
{
dadesfi(f);
}
}
public static void dadesfi(string d )
{
Queue
<string> cola
= new Queue
<string>(); FileInfo fi
= new FileInfo
(d
); long mida = fi.Length;
string res;
if (mida != 0)
{
cola.Enqueue(d);
Console.WriteLine(d);
}
while ( cola.Count > 0 ) //Saber el numero de elementos de la cola.
{
//Console.Clear();
bool cap=false;
string n = cola.Dequeue(); //Sacar de la cola elementos.
Console.WriteLine("Vols Elimnar el fitxer {0} ?",n);
res=Console.ReadLine();
if (res == "si")
{
File.Delete(n);
//Console.WriteLine("El fitxer s'ha eliminat correctament");
}
else if ( res == "no" )
{
//Console.WriteLine("El fitxer no s'ha eliminat");
}
else if ( res == "cap")
{
Console.WriteLine("Prueba cap");
while ( cola.Count > 0 )
{
Console.WriteLine(n);
n = cola.Dequeue();
}
Console.WriteLine("No s'ha eliminat cap fitxer");
//break;
}
else if ( res == "tots")
{
Console.WriteLine("Prueba tots");
while ( cola.Count > 0 )
{
File.Delete(n);
n = cola.Dequeue();
}
Console.WriteLine("S'han eliminat tots els fitxers");
}
else
Console.WriteLine("No has escrit la paraula correcta");
}
}
}
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.