Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Classe File e path

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Classe File e path

    Ciao a tutti,
    sto utilizzando la classe File per specificare un path, per poter poi determinare uan lista di file presenti in una cartella.
    Quindi:
    codice:
    File dir = new File("dirIniziale\\dirA\\dirB\\dirC\\dirD");
    Se volessi invece cercare la directory di cui voglio elencare i file in essa contenuti ma senza conoscere l'intero percorso, ma solo la directory di partenza e quella finale, c'è un modo per farlo?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non ho capito che devi fare, fai un esempio
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi fare una cosa del genere (fatta al volo senza neanche eseguire):

    codice:
    private File searchFolder(File startFolder, String endFolderName) {
        if (!startFolder.isDirectory()) {
            throw new IllegalArgumentException(startFolder + " is not a valid folder");
        }
    
        if (endFolderName == null || endFolderName.trim().length() == 0) {
            throw new IllegalArgumentException(endFolderName + " is not a valid folder name");
        }
    
        return doSearch(startFolder, endFolderName);
    }
    
    private File doSearch(File currentFolder, String endFolderName) {
        File[] currentFolderContent = currentFolder.listFiles(new FileFilter() {
    
            @Override
            public boolean accept(File pathname) {
                return pathname.isDirectory();
            }
    
        });
    
        File answer = null;
    
        for (File folder : currentFolderContent) {
            if (folder.getName().equals(endFolderName)) {
                answer = folder;
            } else {
                answer = doSearch(folder, endFolderName);
            }
    
            if (answer != null) {
                break;
            }
        }
    
        return answer;
    }

    Questo ti permette di esplorare da una cartella di partenza ad una finale: tu puoi modificarlo per visualizzare il contenuto, non è difficile.
    Ultima modifica di Alex'87; 22-09-2014 a 09:44
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Se volessi invece cercare la directory di cui voglio elencare i file in essa contenuti ma senza conoscere l'intero percorso, ma solo la directory di partenza e quella finale, c'è un modo per farlo?
    Possibile sì .... ma che abbia molto senso ... ehm, direi non tanto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Spiego meglio
    Ho questi due jButton
    codice:
    private void AfricaActionPerformed(java.awt.event.ActionEvent evt) {                                       
            File dir = new File("dirIniziale\\Africa");
            String[] files = dir.list();
            DefaultComboBoxModel modello = new DefaultComboBoxModel();
            for (String file : files) {
                modello.addElement(file);
    
            }
            Menu_Tendina.setModel(modello);
        }                                      
    
        private void EuropaActionPerformed(java.awt.event.ActionEvent evt) {                                       
            File dir = new File("dirIniziale\\Europa");
            String[] files = dir.list();
            DefaultComboBoxModel modello = new DefaultComboBoxModel();
            for (String file : files) {
                modello.addElement(file);
    
            }
            Menu_Tendina.setModel(modello);
        }
    ciascuno dei quali mi permette di visualizzare le città rispettivamente della directory Europa e Africa in Menu_Tendina.


    Poi ho il pulsante "Cerca" che mi "preleva" la città da Menu_Tendina e mi deve aggiungere le sottocartelle presenti nella città selezionata in un'altra jComboBox
    codice:
    private void CercaActionPerformed(java.awt.event.ActionEvent evt) {                                      
            
            elemento.setCitta(String.valueOf(Menu_Tendina.getSelectedItem()));
            
            File dir = new File("dirIniziale\\Europa\\" + elemento.getCitta());
            String[] files = dir.list();
            DefaultComboBoxModel modello = new DefaultComboBoxModel();
            for (String file : files) {
                modello.addElement(file);
                
            }
            Database_Radiazione.setModel(modello);
            datab.setData(String.valueOf(Database_Radiazione.getSelectedItem()));
            
            jTextArea1.setText(elemento.getCitta());
            jTextArea2.setText(String.valueOf(Menu_Tendina.getSelectedItem()));
        }
    In rosso, ho messo "Europa", ma potrebbe essere anche "Africa". Quindi, questo elemento del path dipende dalla selezione di uno dei 2 jButton iniziali.
    Come potrei fare?
    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    In rosso, ho messo "Europa", ma potrebbe essere anche "Africa". Quindi, questo elemento del path dipende dalla selezione di uno dei 2 jButton iniziali.
    Come potrei fare?
    Tieni il path, quello che adesso assegni a File dir, da qualche parte invece che solo come variabile locale.

    P.S. e non centra quindi niente il "cercare" la directory sul file-system.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Non è possibile considerare "Europa" o "Africa" in base alla selezione di uno dei due jButton, tipo:
    codice:
    File dir = new File("dirIniziale" + "bottone selezionato" + elemento.getCitta());
    ????

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    allora devi imparare ad usare la classe File se vuoi fare le cose per benino.
    Come ti ha detto andbin, hai la directory iniziale che diventa una variabile locale

    codice:
    private final String initialDir ; 
    
    public Costruttore(final String initialDir){
            this.initialDir = initialDir; 
    }
    quando tu selezioni il continente, avrai

    codice:
        File path = new File (initialDir, elementoSelezionato); 
       // a sto punto fai quello che ti pare, se dai qui selezioni uno stato 
       File pathState = new File (path.getAbsolutePath(), statoSelezionato) ; 
    // infine la citta
      File pathCity = new File (pathState.getAbsolutePath(), city);
    non ricordo se il costruttore che prende File come primo parametro esiste (controlla la documentazione), esiste sicuro quello che prende 2 stringhe
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Non è possibile considerare "Europa" o "Africa" in base alla selezione di uno dei due jButton, tipo:
    codice:
    File dir = new File("dirIniziale" + "bottone selezionato" + elemento.getCitta());
    ????
    E non è quello che ho detto? Hai premuto il pulsante Africa? Bene tieni da qualche parte (non solo come variabile locale) l'oggetto File che rappresenta il path "dirIniziale\\Africa". E lo potrai usare più avanti.
    Quale è il dubbio su quanto ho detto?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ok ci provo
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.