Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Funzione ricorsiva
Forum - C# / VB.NET - Funzione ricorsiva

Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 10:51
Domenica, 07/08/2011
Ciao a tutti
ho scritto un codice per analizzare e trovare tutti i file con estensione .png :ot:
Codice sorgente - presumibilmente VB.NET

  1. Sub cerca(ByVal path As String)
  2.                     For Each i As String In Directory.GetFiles(path)
  3.                 If IO.Path.GetExtension(i) = ".png" Then
  4.                     file.Add(i)
  5.                 End If
  6.             Next
  7.        For Each i As String In Directory.GetDirectories(path)
  8.             cerca(i)
  9.         Next
  10.     End Sub


però arrivato alla seconda iterazione viene negato l'accesso a una cartella il codice quindi si blocca
:grr:
come posso  rimediare??:blush::blush:


Vivi e lascia vivere
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
2
Down
V
Segnala al moderatore
Postato alle 14:40
Domenica, 07/08/2011
Personalmente io userei un try catch, però la funzione ricorsiva in sé è inutile: il metodo GetFiles ha un overload che accetta come parametro, oltre alla directory dove cercare, anche un valore SearchOption che permette di specificare se cercare in tutte le subdrectories.

Dai un'occhiata: http://msdn.microsoft.com/en-us/library/ms143327.aspx


[OT]che figo scrivere dalla spiaggia :rofl:[/OT]

rimane sempre lo stesso problema, si blocca.... anchee se sostituisco come dici tu - Saik - 10/08/11 19:22
PM
Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Up
-5
Down
V
Segnala al moderatore
Postato alle 14:44
Domenica, 07/08/2011
credo che si blocchi perchè tenti di accedere ad un flusso di dati che hai già aperto ma non hai chiuso, quindi lo devi chiudere!!  chiudilo prima del secondo ciclo (adesso sono un po' arrugginito di vb e l'istruzione precisa non me la ricordo e in più sono su linux e quindi non posso neanche provare ma credo sia IO.Path.Close(), ripeto non sono per nulla sicuro!!)

sta usando metodi statici che non centrano assolutamente niente con i flussi, e il metodo IO.Path.Close te lo sei inventato te. - Qwertj - 07/08/11 15:13
Infatti ha detto: "CREDO".... percui non ne è certo... - Milmor94 - 07/08/11 17:36
Stai eseguendo operazioni su cartelle protette dal sistema forse. - BionicGod - 08/08/11 18:24


Non hai bisogno di vedere l’intera scalinata. Inizia semplicemente a salire il primo gradino. (Martin Luther King)
PM