Qual è l'ordine di lettura predefinito per il metodo Directory.EnumerateFiles
? È coerente?Directory.EnumerateFiles read order (C#)
Nella mia esperienza fino ad ora sembra essere dalla data in cui i file sono stati creati ma non sono stato in grado di trovare conferma di ciò.
Motivo che chiedo è perché parte di un programma sto lavorando su carichi di file binari dalle directory in oggetti che vengono a loro volta caricati in array. Questi oggetti si riferiscono l'un l'altro da matrici di indici, il che significa che l'ordine in cui sono caricati nei loro array deve rimanere coerente (per evitare di cambiare gli indici).
Mentre sono qui, ho un'altra domanda minore. Quando i file vengono cancellati, ovviamente cambia gli indici dei file caricati negli array, qualunque cosa io faccia. Qualche suggerimento per evitare questo problema? Ho evitato di usare un dizionario fino ad ora a causa di preoccupazioni sullo storage (preferisco non archiviare array di chiavi testuali se posso evitarlo) ma se è l'unico approccio possibile, potrei doverlo implementare comunque.
EDIT: Dopo gli ottimi consigli dai tuoi risposte, ho riscritta a un approccio dizionario utilizzando i nomi dei file. L'impatto sulle prestazioni è stato abbastanza trascurabile e la leggibilità e la manutenibilità sono state notevolmente migliorate, quindi ha funzionato abbastanza bene.
Perché non mantenere solo un riferimento anziché un indice? Non dovresti preoccuparti che gli indici vengano mescolati se lo fai. – casperOne
A causa del modo in cui la serializzazione dei file funziona. Se dovessi salvare file contenenti riferimenti tramite serializzazione e quindi caricare quei file, caricarei l'intero albero degli oggetti ogni volta con conseguente duplicazione di massa. Ad esempio, se Car fa riferimento a Tyre e Truck reference Tire e sono entrambi salvati e quindi caricati, avrei 2 istanze duplicate di Tyre. – Djentleman
Tratto da [MSDN] (http://msdn.microsoft.com/en-us/library/07wt70x2.aspx), su 'GetFiles' (che essenzialmente chiama' EnumerateFiles'): * L'ordine dei nomi dei file restituiti è non garantito; usa il metodo Sort() se è richiesto un ordinamento specifico. * Ti suggerisco, come dice la documentazione, di utilizzare il tuo metodo di ordinamento. – Mir