2012-05-01 8 views
10

Qual è l'ordine in cui i file Files.walkFileTree visite/directory allo stesso livello?Ordine di attraversamento in Files.walkFileTree

Non sembra visitarli in ordine di dimensioni, ultimo orario o nome. Non sono riuscito a trovare nulla nello API documentation.

Forse il metodo preVisitDirectory può essere utilizzato per specificare l'ordine di visita, ma che cosa è il comportamento di default?

risposta

12

L'ordine in cui vengono letti i sottodirectory non è definito come da questo commento in the Java Tutorial:

Un albero di file camminato profondità prima, ma non si può fare alcuna ipotesi circa l'ordine di iterazione che le sottodirectory sono visitati .

Per quanto riguarda l'ordine in cui vengono letti i file, dipende (nell'implementazione corrente) sulla dotazione DirectoryStream, che è sun.nio.fs.WindowsDirectoryStream sul mio computer. Leggendo the javadoc of DirectoryStream, vedrai che:

Gli elementi restituiti dall'iteratore non sono in ordine specifico.

+0

Grazie per la risposta. Quindi Files.walkTreeFile chiamerà a un certo punto Files.newDirectoryStream e il DirectoryStream restituito dipende dall'OS e/o dal jdk/jre? – Sridhar

+0

Fondamentalmente si. La linea di fondo è: non codificare assumendo che otterrete un ordine specifico in quanto non vi è alcuna garanzia in merito. – assylias