Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.119 pregleda

Najnovija ↓

Pretraga fajlova kroz subfolder-e 27.02.2008. u 21:51 · pre 227 meseci #1
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 :D nadam se da ste me razumeli.
Dakle radi se o C#-u.
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Pretraga fajlova kroz subfolder-e 27.02.2008. u 23:47 · pre 227 meseci #2
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
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pretraga fajlova kroz subfolder-e 28.02.2008. u 01:48 · pre 227 meseci #3
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);
            }
        }
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Pretraga fajlova kroz subfolder-e 28.02.2008. u 04:06 · pre 227 meseci #4
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");
            }
        }

Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Pretraga fajlova kroz subfolder-e 28.02.2008. u 13:24 · pre 227 meseci #5
Evo ti najjednostavnije sto moze:
Code:

string[] files = System.IO.Directory.GetFiles("c:\\windows", "*.*", System.IO.SearchOption.AllDirectories)
Re: Pretraga fajlova kroz subfolder-e 28.02.2008. u 16:04 · pre 227 meseci #6
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
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme