Struttura di directory Java JTree dai percorsi dei file

Ho cercato di capirlo, forse qualcuno di voi può aiutarmi. Ho una lista di file con i loro percorsi completi (questi sono solo stringhe i file sono su un’altra macchina), ad esempio:

C:\a\b\c\file1.txt C:\a\b\c\file2.txt C:\a\d\file3.txt C:\e\file4.txt 

Voglio creare un Jtree per mostrare la struttura della directory in questo modo:

 C: a b c file1.txt file2.txt d file3.tct e file4.txt 

Sto spaccando la stringa sul separatore in modo da finire con un elenco di array come:

 "C:","a","b","c","file1.txt" "C:","a","b","c","file2.txt" "C:","a","d","file3.txt" "C:","e","file4.txt" 

Ora voglio aggiungere loro un indice alla volta, ma se il valore esiste già a quel livello, allora salta al prossimo indice. cioè aggiungerebbe il primo array quindi sul secondo array andrebbe sul livello 0 dell’albero esiste già un “C:” quindi spostati sul livello 1 dell’albero e sull’indice 1 dell’array. I problemi che ho sono che non sono sicuro di come navigare l’albero in questo modo.

Qualche suggerimento o implementazione alternativa?

Lascia che File esegua il lavoro di analisi e mantenimento dei percorsi. Poiché desideri visualizzare i file in un JTree , potresti anche creare un TreeModel corrispondente come FileTreeModel , citato qui . Poiché implementa TreeModel , può “essere impostato come modello di TreeModel e quindi si dovrebbe avere un semplice vecchio JTree standard”. È ansible utilizzare qualsiasi File in qualsiasi file system montato come root, ad esempio:

 TreeModel model = new FileTreeModel(new File(System.getProperty("user.dir"))); JTree tree = new JTree(model); 

Immagine

Non sono sicuro che FileTreeModel sia il modo migliore: esegue la scansione di intere directory. Da quello che hai scritto, immagino che tu voglia solo visualizzare i percorsi dalla tua lista.
Puoi ottenerlo usando TreePathsTreeModel qui descritto: Come faccio a mostrare il registro di Windows in jTree?
Devi solo convertire i percorsi di file da stringhe in oggetti TreePath.

Per prima cosa ordina le stringhe (prima di dividerle).

Come elaborare la prima riga è ovvio e non voglio commentarlo. Nella seconda riga, cerca l’albero già costruito e controlla se i nodes esistono già. Dopo aver trovato quello che non esiste, seguire la procedura eseguita nella prima riga.