Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema FileFilter

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    10

    Problema FileFilter

    Salve, attraverso un FileFilter settato in un JFileChooser ho impostato l'apertura dei soli file .csv però scegliendo dal filechooser "Tutti i File" è possibile visualizzare anche gli altri file eventualmente presenti nelle directory.
    Ovviamente aprendo un altro tipo di file ho dei problemi perché il codice non va bene.
    Come posso fare per evitare l'apertura di altri tipi di file? Va bene anche una soluzione per esempio che se apro un file che non è .csv esce un messaggio di avviso (tipo JOptionPane) con una scritta di errore.

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

    Re: Problema FileFilter

    Originariamente inviato da Dante90A
    Salve, attraverso un FileFilter settato in un JFileChooser ho impostato l'apertura dei soli file .csv però scegliendo dal filechooser "Tutti i File" è possibile visualizzare anche gli altri file eventualmente presenti nelle directory.
    Ovviamente aprendo un altro tipo di file ho dei problemi perché il codice non va bene.
    Come posso fare per evitare l'apertura di altri tipi di file? Va bene anche una soluzione per esempio che se apro un file che non è .csv esce un messaggio di avviso (tipo JOptionPane) con una scritta di errore.
    Innanzitutto, spero tu lo sappia, i "choosable file filter" di JFileChooser servono solo per filtrare la lista dei file a livello "visuale". Di per sé non impediscono o obbligano null'altro.

    Se vuoi togliere il filtro "Tutti i file", basta che invochi:
    tuoFileChooser.setAcceptAllFileFilterUsed(false);

    Questo però non risolve del tutto il tuo problema. Anche se hai solo il filtro per i csv, l'utente è ancora perfettamente libero di scrivere il nome file pippo.xyz e confermare.

    Se vuoi, dopo che la dialog di JFileChooser si è chiusa, puoi prendere il File e invocare tu esplicitamente il accept del filtro per vedere se lo accetta. Se non lo accetta, puoi fare altro (es. messaggio di errore).

    La questione di quest'ultimo scenario è che il controllo lo fai solo dopo che la dialog si è chiusa. Se vuoi si può fare anche prima che si chiuda, ma devi estendere JFileChooser (c'è anche un esempio tra i miei Java Examples).


    EDIT: chiaramente, volendo generalizzare, dovresti prendere il filtro selezionato dall'utente (specialmente se ce ne fosse più di uno).
    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
    Registrato dal
    Sep 2013
    Messaggi
    10
    Grazie per la risposta, ho eliminato il filtro "Tutti i file" e in più invocato il metodo accept del filefilter in seguito alla scelta del file, generando se necessario un messaggio di errore, questo evita sicuramente di commettere errori prima della selezione del file.
    Ora mi servirebbe un altro piccolo aiuto, nel caso in cui si selezioni effettivamente un file .csv dovrei effettuare una verifica del file.

    Il file è scritto nel seguente modo:

    dato1;dato2;dato3;dato4;dato5

    ripetuto per n righe.

    L'unico modo per effettuare la verifica è quello di scorrere tutto il file ed effettuare le verifiche necessarie per esempio con uno StringTokenizer o esiste un altro modo per sapere se il file selezionato è un file per me valido?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Dante90A
    Ora mi servirebbe un altro piccolo aiuto, nel caso in cui si selezioni effettivamente un file .csv dovrei effettuare una verifica del file.

    Il file è scritto nel seguente modo:

    dato1;dato2;dato3;dato4;dato5

    ripetuto per n righe.

    L'unico modo per effettuare la verifica è quello di scorrere tutto il file ed effettuare le verifiche necessarie per esempio con uno StringTokenizer o esiste un altro modo per sapere se il file selezionato è un file per me valido?
    Nuova problema->nuova discussione

    Comunque dai un'occhiata a questo: http://stackoverflow.com/questions/1...ession-in-java
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dante90A
    L'unico modo per effettuare la verifica è quello di scorrere tutto il file ed effettuare le verifiche necessarie per esempio con uno StringTokenizer o esiste un altro modo per sapere se il file selezionato è un file per me valido?
    O trovi una libreria esterna, già fatta, che sia in grado di leggere e/o validare il csv ... oppure scegli la classica strada del "fai-da-te" e a questo punto puoi utilizzare un po' quello che vuoi (dipende dal livello di rigorosità che vuoi raggiungere) cioè StringTokenizer o una (o più) espressione regolare o altro di più complesso (es. un parser più completo).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.