[ Sandra_G @ 06.03.2007. 12:55 ] @
U jednom folderu postoji oko milion i po fajlova - ne pitajte me kako se to desilo - nemam pojma. E, sad - posto apsolutno nema sanse da se taj folder otvori u Win exploreru, pa da se "podeli" na vise foldera, smislili smo sledecu stvar - da napravimo malu win forms aplikaciju koja ce to da uradi. Moje pitanje je - kako to uraditi? Ja sam probala metodu DirectoryInfo.GetFiles() - ne funkcionise bas najbolje - fajlovi su se ucitavali jedno sat vremena, i jos se nisu ucitali... Sta raditi?
[ Shadowed @ 06.03.2007. 13:15 ] @
Mozda je jednostavnije da bez pravljenja programa u command prompt-u koristis komandu move a*.* folder_a zatim b, c i tako ostala slova.
Pri tome nece biti listanja fajlova ali ce se vrsiti premestanje u zasebne direktorijume. Onda ces u svakom imati u proseku 26 puta manje fajlova. Ako je to i dalje previse, mozes ici sa fajlovima koji pocinju sa aa, ab, ac, ..., zz.
Probaj sa jednom komandom i ako je trajanje zadovoljavajuce (a u svakom slucaju, iz programa ili ovako, ce trajati dugo) mozes napraviti program koji ce ove komande smestiti u jedan .bat fajl i onda pokrenes njega i ostavis da radi.
Posle razvrstavas dalje iz tih foldera.
[ jablan @ 06.03.2007. 13:17 ] @
Glupo pitanje - šta će vam milion i po fajlova, pa makar i podeljenih u više foldera?

Generalno, za ove stvari koje pominje shadowed, i shell skripta (ako se to tako zove u vindousu) može biti efikasna.
[ mmix @ 06.03.2007. 13:27 ] @
Nama se desila slicna stvar, jedan od novih servera ja imao open-relay SMTP na sebi ali nije imao konfigurisan DNS, pa su spameri udarali par meseci po njemu a smtp je sve bacao u badmail posto nije mogao da odradi DNS rezoluciju . Kad smo primiteli u folderu je bilo oko 13 miliona fajlova. samo del *.* je trajao oko 18 casova


Najveci problem koji sad imas je da ntfs radi potpuno drugacije od FAT-a, inicijalni deo fajla je uvek u MFT (master file table) koji ti je sada heavily fragmentiran i usporava svaku operaciju nad tim folderom. Shadowed ti je dao jedan predlog, ali imaj u vidu da to, a i bilo koje drugo resenje traje veoma dugo, posto ce prvi scan foldera da bi izvukao a*.* trajati otrpilike koliko i otvaranje foldera u exploreru. dobra strana je sto ce svako sledece slovo trajati krace i krace. Jednostavno nema lakog izlaza iz ovoga, moracete da istrpite tumbanje po NTFSu. Ja ti ne bih preporucio winforms aplikaciju i pomeranje fajlova fajl po fajl. Iako ce prvi scan da ti vrati sve fajlove koji su u folderu (sto ce isto trajati koliko i otvaranje foldera u exploreru), svaki move pojedinacnog fajla preko winforms applikacije ce zahtevati ponovni scan foldera od strane OS-a da bi locirao prvi fragment i link ko ostatku.

[ Sandra_G @ 06.03.2007. 13:39 ] @
Ok, ljudi, hvala vam puno! Zaista mi nije palo na pamet da premestam po nekom search patternu. Dakle, ne postoji "brz" nacin da se ovo zavrsi :) Onda eto - move a*.*, pa nek ide zivot :)

Pozdrav!

p.s. kako li su ljudi resavali svoje probleme kad nije bilo interneta i foruma :D
[ Shadowed @ 06.03.2007. 13:46 ] @
Eh da, setih se sada, one komande malo drugacije uradi, navedi pune putanje, znaci move x:\million_files_directory\a*.* x:\new_dir\a jer tada .bat fajl nece morati da bude unutar tog direktorijuma sto bi inace otezavalo stvar.

Btw, mmix, mislim da nista ne bi trajalo koliko otvaranje u explorer-u. Tj. mislim da bi isti pukao jer listview koji koirsti za prikazivanje fajlova ne verujem da bi izdrzao. U svakom slucaju, ovo sa konzolom je brze jer samo pretrazuje fajlove a ne vrsi graficki prikaz liste niti (afaik) drzi taj spisak u memoriji.
[ mmix @ 06.03.2007. 14:22 ] @
Citat:
Shadowed:\Btw, mmix, mislim da nista ne bi trajalo koliko otvaranje u explorer-u. Tj. mislim da bi isti pukao jer listview koji koirsti za prikazivanje fajlova ne verujem da bi izdrzao. U svakom slucaju, ovo sa konzolom je brze jer samo pretrazuje fajlove a ne vrsi graficki prikaz liste niti (afaik) drzi taj spisak u memoriji.


Iscrtavanje listkontrole u poredjenju sa skeniranjem ovog foldera ne bi odnelo neke vece vreme. btw, folder se cuva u memoriji i discarduje kad se predje na drugi folder (vidi se po memory footprintu explorera dok ucitava folder), dok je folder aktivan explorer drzi filewatch handle nad folderom i tako reaguje runtime na promene koje se desvaju nad otvorenim folderom. Da se razumemo, na predlazem upotrebu explorera, on takodje ima debilnu osobinu da selektovani batch fajlova procesira jedan po jedan. Konzola i move komanda su definitivno najbrzi. Takodje ne mislim da bi list kotrola pukla, ali bi footprint milion i po fajl definicija u exploreru verovatno dovelo do povecanog swapovanja virtulene memorije sto bi dalje usporilo ceo proces :)

[ Prokleta_Nedelja @ 06.03.2007. 19:46 ] @
"p.s. kako li su ljudi resavali svoje probleme kad nije bilo interneta i foruma :D"

Pa nisu imali ovih problema :)