[ IQooLogic @ 27.02.2008. 20:51 ] @
Sve shto treba da uradim je da pronadjem fajlove po ekstenziji i da ih obrishem.Naravno pretraga se mora odvijati i po subfolderima.

[NIJE DOMACjI ili neshto sl]

Code:

                string where = HDDlist.SelectedItems[0].Text;
                // samo prva 3 karaktera zato shto pored C:\ ima i label HDD-a :)
                where = where.Substring(0, 3);

                DirectoryInfo FindFile = new DirectoryInfo(where); int i = 0;
                DirectoryInfo[] dirs = FindFile.GetDirectories();
                FileInfo[] Files = FindFile.GetFiles("*.txt");
                foreach (DirectoryInfo dir in dirs)
                {
                    foreach (FileInfo F in Files)
                    {
                        F.Delete();
                    }
                    Files = dirs[i].GetFiles("*.txt");
                    i++;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Thumbs Deleter v0.1");
            }

            finally
            {
                MessageBox.Show("Job done.");
            }


Ovaj kod radi mada ima par fleshki.Recimo ne ide u zadnji folder i subfoldere subfoldera nadam se da ste me razumeli.
Dakle radi se o C#-u.
[ mmix @ 27.02.2008. 22:47 ] @
Ne mozes iterativno da odradis ovo (*) posto imas varijabilnu dubinu svakog podfoldera. Treba ti rekurzivni algoritam (ovde dajem pseudo posto nemam VS pri ruci, snacic ces se lako za odgovarajuce metode u C#u):

Code:

void obrisi (folder)
{
    foreach (subfolder in folder.subfolders) obrisi(subfolder);  // rekurzija
    foreach (file in folder.getfiles("*.txt")) delete(file);
}

where = pocetni folder;
try { obrisi(where); } 
catch { greska}


* zapravo mozes, svaki rekutzivni algoritam moze da se izvede iterativno, ali uz komplikovaniji kod, rekurzija ce ti za ovo svrhu elegantno resiti stvar
[ IQooLogic @ 28.02.2008. 00:48 ] @
Jesi li mislio neshto ovako ili josh jednostavnije ?

Code:

        public Form1()
        {
            InitializeComponent();
            scanDir(@"C:\", 1);
        }

        const int HowDeepToScan = 7;//ili je bolje do nivoa 4 ?

        private static void prcoessdire(string sourceDir, int recursionLvl)
        {
            scanDir(sourceDir, recursionLvl);
        }

        private static void scanDir(string sourceDir, int recursionLvl)
        {
            if (recursionLvl <= HowDeepToScan)
            {
                string[] fileEntries = Directory.GetFiles(sourceDir);
                foreach (string fileName in fileEntries)
                {
                    MessageBox.Show(fileName);
                }

                string[] subdirEntries = Directory.GetDirectories(sourceDir);
                foreach (string subdir in subdirEntries)
                    if ((File.GetAttributes(subdir) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
                        scanDir(subdir, recursionLvl + 1);
            }
        }
[ IQooLogic @ 28.02.2008. 03:06 ] @
Izvini sa dva posta zaredom al rekoh da ne menjam predhodni jer ga nisi prokomentarisao

Code:

        private void startbtn_Click(object sender, EventArgs e)
        {
            try
            {
                string here = HDDlist.SelectedItems[0].Text;
                here = here.Substring(0, 3);
                HDDlist.Items.Clear();
                Search(here);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Thumbs Deleter v0.1");
            }
            finally
            {
                MessageBox.Show("Job done.");
            }
        }


        void Search(string where)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(where))
                {
                    foreach (string f in Directory.GetFiles(d, "*.txt"))
                    {
                        HDDlist.Items.Add(f);
                    }
                    Search(d);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Thumbs Deleter v0.1");
            }
        }

[ DarkMan @ 28.02.2008. 12:24 ] @
Evo ti najjednostavnije sto moze:
Code:

string[] files = System.IO.Directory.GetFiles("c:\\windows", "*.*", System.IO.SearchOption.AllDirectories)
[ IQooLogic @ 28.02.2008. 15:04 ] @
Koliko treba vremena da bi se izvrshilo trazhenje fajlova sa kodom u jednom redu ?
Ja sam probao rekurzijom i extra radi.Potrebno joj je oko 10-20 sekundi da pretrazhi ceo HDD (C:\ - na njemu je win) - oko 30GB i trazhio je *.txt fajlove a ima ih gomila, za neverovati

Elem jesi li probao da vidish kolo je trazhenje u jednom redu brzo jer me mrzi da mu radim multithreading ? :P