Newsgroup: it.comp.lang.visual-basic
Titolo: Ricerca Files

Mi affido ancora una volta a voi, e spero che mi possiate aiutare.
devo eseguire una ricerca su tutto il disco C (piu di 90 GB occupati e
un numero di file così alto che non riesco a contarli).
uso questo:
Dim files As ReadOnlyCollection(Of String)
files = My.Computer.FileSystem.GetFiles(Drive.Text,
FileIO.SearchOption.SearchAllSubDirectories, StringaRicerca)
Si verificano, però, 2 problemi:
   1. Ogni volta che la funzione non riesce ad accedere ad una
cartella, dà errore e si ferma
   2. Appena trova un file lo deve inserire subito in una listview,
non tutti insieme quando ha finito. Un po' come la ricerca di windows.
Se potete suggerirmi qualcosa... suggerite :)
grazie.
Ah, già... vb2005

 non tutti insieme quando ha finito. Un po' come la ricerca di windows.
Con la funzione ricorsiva, ma dubito che sia una strada percorribile: 
listbox e listview in particolare sono piuttosto lente, superati un tot di 
files, nemmeno molto alto, iniziano a rallentare in modo indicibile... mi sa 
che potresti arrivare ad aspettare qualche secondo per ogni file inserito.
Ciao 

 che potresti arrivare ad aspettare qualche secondo per ogni file inserito.
Io ho fatto una prova veloce, e un po' rozza, così:
Dim dr As New IO.DirectoryInfo("j:\Documenti\")
For Each fi As IO.FileInfo In dr.GetFiles("*.txt", 
IO.SearchOption.AllDirectories)
	ListBox1.Items.Add(fi.FullName)
         Application.DoEvents()
Next
Nella directory ci sono 2034 file, mentre quelli che trova sono 82. Non 
so quanto ci mette, ma direi meno di un secondo.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 Io ho fatto una prova veloce, e un po' rozza
Oltre che rozza è anche una scemata, perché mi sa che prima crea la 
collezione tutta in una volta, e solo dopo assegna gli elementi alla 
ListBox... come non detto :-)


 quanto ci mette, ma direi meno di un secondo.
82 files sono una stupidata, se già così percepisci un intervallo di tempo 
per quanto piccolo, non oso pensare alle centinaia di migliaia di files di 
Daniele :)
Le treeview (ma credo anche le listbox) man mano che aumentano gli items 
aumenta anche il tempo necessario per inserirne di nuovi in modo 
esponenziale.
Ciao 

si, effettivamente è lento...
inoltre ho provato il codice di VITRIOL e quando raggiunge la riga
For Each fi As IO.FileInfo In dr.GetFiles("*.txt",
IO.SearchOption.AllDirectories)
dice che non può accedere alla cartella C:\WINDOWS\Registration\Nuova
cartella (2)
cavolo, quella cartella è una trappola! ho provato a crearci delle
sottocartelle e non me le vuole piu togliere :)

 cartella (2)
Sicuro che non è tenuta bloccata in esclusiva da qualche applicazione? 
Prova a vedere se riesci a sbloccarla con 
http://ccollomb.free.fr/unlocker/


uhm... questo si che è un programmino utile!
l'ho provato e dice che non è bloccata da nessun programma... forse è
come la System Volume Information

 come la System Volume Information
E' successo anche a me su XP: capita che una cartella si incastra sui 
permessi e non riesci piů a toccarla.
Ce l'avevo fatta cosě:
http://groups.google.it/group/microsoft.public.it.windowsxp/browse_thread/thread/295bb96b21ce1380/3628839a195d3c43?lnk=gst&q=znt.fabio+cartella&rnum=1#3628839a195d3c43
Prova anche tu a chiedere al ng 
microsoft.public.it
, oppure prova a 
cancellarla tramite cmd.exe lanciandolo con il comando
AT /interactive <ora:minuti + 1> cmd.exe
in modo che cmd.exe venga lanciato come System e non come il tuo utente.
Ciao

hai ragione, lanciandolo pianificato viene eseguito come system e
quindi dovrei riuscire ad eliminarla.
Per vb dovrebbe bastare un On Error Resume Next in una porzione di
codice migliore della mia, per riuscire a "scavalcare" la cartella.
Ciao