Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di omaggi
    Registrato dal
    Sep 2009
    Messaggi
    25

    [JAVA] Esecuzione di un applicazione su più file di una cartella

    Ciao a tutti.
    Ho scritto (finalmente), un applicazione che legge riga per riga da un file txt (i campi sono separati da e secondo certi parametri, cancella certi dati che non mi servono.
    I dati utili vengono poi inseriti in un ArrayList. Il passo successivo sarà quello di inserirli in un db MySQL tramite JDBC Connector.

    Il mio problema é il seguente:
    momentaneamente mi legge un file definito (cioé con il path completo). Io però dovrei dirgli di leggere una data cartella e di eseguire l'applicazione su tutti i file che esistono in questa cartella...
    [Ho cercato nel forum e ho trovato certe discussioni interessanti sul metodo listFiles, però non sono riuscito proprio ad inserirlo nel mio caso specifico...]

    Vi allego il codice, così da poter avere una visione chiara del mio problema...

    import java.io.*;
    import java.util.ArrayList;

    class FileRead {
    public static void main(String args[]) {

    try{
    int count = 0;
    File f=new File("C:/Dati/dati1.txt");
    FileInputStream fis=new FileInputStream(f);
    InputStreamReader isr=new InputStreamReader(fis);
    BufferedReader br=new BufferedReader(isr);
    String linea=br.readLine(); //leggo la riga la 1a volta
    count++;
    while(linea!=null){ //non inserisco le prime 2 righe nel arraylist
    if(count > 2)
    stampaArrayList(parseTxt(linea));
    linea = br.readLine();
    count++;
    }

    }catch (Exception e){
    System.err.println("Errore: " + e.getMessage());
    }
    }

    static ArrayList<String> parseTxt (String riga) { //metodo che divide e pulisce la riga di dati
    int nextPosizione = 0;
    int posizione = 0;
    int count = 1; //conta i ";"
    String temp = null;
    ArrayList<String> array = new ArrayList<String>();

    nextPosizione = riga.indexOf(";", posizione);
    while(nextPosizione >-1){
    if((count < 2 || count > 10) && (count < 13 || count > 15)) {
    temp = riga.substring(posizione, nextPosizione);
    if(!temp.equals("W")){
    array.add(temp);
    }
    }
    posizione = nextPosizione +1;
    nextPosizione = riga.indexOf(";", posizione);
    count++;
    }
    return array;
    }


    static void stampaArrayList (ArrayList<String> list) { //metodo che stampa la lista di array
    for(int i=0; i<list.size();i++) {
    System.out.println("Elemento "+(i+1)+": "+list.get(i));
    }
    System.out.println("============================") ;
    }

    }

    Qualcuno mi saprebbe aiutare? Grazie mille e buona giornata Omar!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Esecuzione di un applicazione su più file di una cartella

    Originariamente inviato da omaggi
    momentaneamente mi legge un file definito (cioé con il path completo). Io però dovrei dirgli di leggere una data cartella e di eseguire l'applicazione su tutti i file che esistono in questa cartella...
    [Ho cercato nel forum e ho trovato certe discussioni interessanti sul metodo listFiles, però non sono riuscito proprio ad inserirlo nel mio caso specifico...]
    Appunto.... list() o listFiles() di java.io.File.

    A grandi linee il codice da cui puoi partire è:

    codice:
    File dir = new File("...tua-cartella...");
    
    File[] txtFiles = dir.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");    // prende solo i file che terminano con .txt
        }
    });
    
    for (int i = 0; i < txtFiles.length; i++) {
        File f = txtFiles[i];
    
        // .... fai quello che devi fare con ogni file txt
    }
    Ed è chiaro che devi anche cambiare un pochino le cose nel codice che hai postato. Come hai fatto finora, hai un main() in cui fai solo la gestione di 1 file con path fisso. Chiaramente devi "spostare" tutta la gestione del file di testo dentro il for che ho appena mostrato o meglio ancora in un metodo apposito (e nel for sopra lo invochi semplicemente).

    Nota: la implementazione del FilenameFilter l'ho fatta come "anonymous" inner class. Ma si può fare anche in altri modi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di omaggi
    Registrato dal
    Sep 2009
    Messaggi
    25
    @andbyn

    Grazie mille, ci provo. Speriamo di riuscirci. Sennò posterò i miei dubbi.

    Grazie ancora e buona giornata, Omar!

  4. #4
    Utente di HTML.it L'avatar di omaggi
    Registrato dal
    Sep 2009
    Messaggi
    25
    @andbin

    Grazie mille, ho provato il tuo codice e funziona perfettamente.

    Grazie mille ancora, buona serata Omar!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.