Cancellazione di più files con specifica estensione

di il
8 risposte

Cancellazione di più files con specifica estensione

Ciao a tutti,

ho creato una piccola (e banalissima) app con un bottone alla cui pressione devono essere cancellati tutti i files che iniziano per "res" e che hanno l'estensione ".pld", presenti sotto la cartella "Download". Il codice che ho utilizzato è questo:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button bottoneCancRES = (Button) findViewById (R.id.btnCancRES);

        bottoneCancRES.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {

                //Istruzioni da eeseguire dopo aver premuto il bottone "btnCancRES"


                // Cancella file RES*.PLD

                File file = new File("/sdcard/Download/res*.pld");
                boolean isSuccess = file.delete();

            }
        });
    }
    }
Purtroppo non viene cancellato nessun files.... Ho notato però che se volessi cancellare un singolo file (ad esempio "pippo.pld") questo stesso codice funziona benissimo, ovviamente sostituendo questa parte di codice
File file = new File("/sdcard/Download/res*.pld");
con questa
File file = new File("/sdcard/Download/pippo.pld");

Ho provato anche a cambiare radicalmente il codice inserendo l'esecuzione del comando "rm" da shell ma ottengo sempre lo stesso risultato: riesco a cancellare un singolo file scrivendo il suo esatto nome ma quando provo a cancellare tutti i file inserendo nel comando shell l'operatore "*" non succede nulla...eppure da shell ho lanciato il comando linux seguente e la cancellazione avviene perfettamente
rm /sdcard/Download/res*.pld
Sembrerebbe che in entrambi i casi l'operatore "*" non funzioni....Qualcuno può aiutarmi? Grazie in anticipo

8 Risposte

  • Re: Cancellazione di più files con specifica estensione

    Perché non provi a controllare ogni singolo file per vedere se corrisponde ai tuoi parametri?

    Io ho pensato ad un metodo del genere che controlla se il file va eliminato.
    
       /**
         * 
         * @param  str   nome del file
         * @return true se va eliminato, altrimenti false
         */
        private boolean seEliminare(String str) {
            if (str.substring(0, 3).equals("res")) {
                StringTokenizer strToken = new StringTokenizer(str, ".");
                strToken.nextToken();
                if (strToken.nextToken().equals("pld")) {
                    return true;
                }
            }
            return false;
        }
    
    Bisognerebbe far passare tutti i file presenti in un ciclo e controllarli con questo metodo: se il valore di ritorno è true vanno eliminati con :
    
        boolean isSuccess = new File(nomeFile).delete();
    
  • Re: Cancellazione di più files con specifica estensione

    paintcad ha scritto:


    Perché non provi a controllare ogni singolo file per vedere se corrisponde ai tuoi parametri?

    Io ho pensato ad un metodo del genere che controlla se il file va eliminato.
    
       /**
         * 
         * @param  str   nome del file
         * @return true se va eliminato, altrimenti false
         */
        private boolean seEliminare(String str) {
            if (str.substring(0, 3).equals("res")) {
                StringTokenizer strToken = new StringTokenizer(str, ".");
                strToken.nextToken();
                if (strToken.nextToken().equals("pld")) {
                    return true;
                }
            }
            return false;
        }
    
    Bisognerebbe far passare tutti i file presenti in un ciclo e controllarli con questo metodo: se il valore di ritorno è true vanno eliminati con :
    
        boolean isSuccess = new File(nomeFile).delete();
    

    Grazie gentilissimo ci provo e ti faccio sapere....scusa se il problema era proprio banale ma sono proprio un newbie della programmazione Java/Android ho appena iniziato ...
  • Re: Cancellazione di più files con specifica estensione

    Credevo fosse più facile farlo....eppure cancellare un singolo file è così banale...

    Se non ho capito male dovrei usare un file.listfiles per prelevare la lista dei file ed implementarlo in un ciclo for quindi controllare ogni file con il metodo che hai suggerito...purtroppo non ho ancora le conoscenze per farlo, impiegherei troppo tempo perché dovrei studiare un po...non è che puoi darmi un ulteriore aiuto per semplificarmi la cosa?
  • Re: Cancellazione di più files con specifica estensione

    Prova questo:
    
            // Va al percorso della cartella che contiene i file da eliminare
            File file = new File("/sdcard/Download/");
            
            // Ciclo che fa passare tutti i file
            for (File f : file.listFiles()) {
                
                // Controlla se il file corrisponde ai parametri
                if (seEliminare(f.getName())) {
                    
                    // Se corrisponde lo elimina
                    f.delete();
                }
            }
    
    Fammi sapere se funziona
  • Re: Cancellazione di più files con specifica estensione

    paintcad ha scritto:


    Prova questo:
    
            // Va al percorso della cartella che contiene i file da eliminare
            File file = new File("/sdcard/Download/");
            
            // Ciclo che fa passare tutti i file
            for (File f : file.listFiles()) {
                
                // Controlla se il file corrisponde ai parametri
                if (seEliminare(f.getName())) {
                    
                    // Se corrisponde lo elimina
                    f.delete();
                }
            }
    
    Fammi sapere se funziona
    Ok grazie mille! ti faccio sapere
  • Re: Cancellazione di più files con specifica estensione

    Si funziona! Grazie milleeeeeee

    PS: ho dovuto rinominare la variabile "file" perché mi dava un errore nell'istruzione:
            // Va al percorso della cartella che contiene i file da eliminare
            File file = new File("/sdcard/Download/");
  • Re: Cancellazione di più files con specifica estensione

    Hai dovuto rinominarla perché probabilmente precedentemente hai un'altra variabile con quel nome.
    Sono contento che funzioni!
  • Re: Cancellazione di più files con specifica estensione

    Si infatti, grazie di nuovo!
Devi accedere o registrarti per scrivere nel forum
8 risposte