Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pretraga fajlova kroz subfolder-e

[es] :: .NET :: Pretraga fajlova kroz subfolder-e

[ Pregleda: 2406 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

IQooLogic
Milos Stojkovic
Software Developer
Srbija

Član broj: 110897
Poruke: 79
*.dynamic.sbb.co.yu.

ICQ: 324236803


+1 Profil

icon Pretraga fajlova kroz subfolder-e27.02.2008. u 20:51 - pre 196 meseci
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.
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pretraga fajlova kroz subfolder-e27.02.2008. u 22:47 - pre 196 meseci
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
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ć
 
Odgovor na temu

IQooLogic
Milos Stojkovic
Software Developer
Srbija

Član broj: 110897
Poruke: 79
*.dynamic.sbb.co.yu.

ICQ: 324236803


+1 Profil

icon Re: Pretraga fajlova kroz subfolder-e28.02.2008. u 00:48 - pre 196 meseci
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);
            }
        }

if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
 
Odgovor na temu

IQooLogic
Milos Stojkovic
Software Developer
Srbija

Član broj: 110897
Poruke: 79
*.dynamic.sbb.co.yu.

ICQ: 324236803


+1 Profil

icon Re: Pretraga fajlova kroz subfolder-e28.02.2008. u 03:06 - pre 196 meseci
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");
            }
        }


if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
77.46.212.*

Jabber: DarkMan


Profil

icon Re: Pretraga fajlova kroz subfolder-e28.02.2008. u 12:24 - pre 196 meseci
Evo ti najjednostavnije sto moze:
Code:

string[] files = System.IO.Directory.GetFiles("c:\\windows", "*.*", System.IO.SearchOption.AllDirectories)
 
Odgovor na temu

IQooLogic
Milos Stojkovic
Software Developer
Srbija

Član broj: 110897
Poruke: 79
*.dynamic.sbb.co.yu.

ICQ: 324236803


+1 Profil

icon Re: Pretraga fajlova kroz subfolder-e28.02.2008. u 15:04 - pre 196 meseci
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
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
 
Odgovor na temu

[es] :: .NET :: Pretraga fajlova kroz subfolder-e

[ Pregleda: 2406 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.