Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34

    problema java lanciare comandi shell

    Scusate ho un programma java che copia dei file .class da una cartella all'altra.
    Quando il numero di file da copiare è basso tutto funziona regolarmente
    ma quando la cartella contiene tanti file, il programma ne copia solo una parte (circa 7/8 file)

    Come posso risolvere il problema? vi posto il codice:


    .
    .
    .
    //CREAZIONE NUOVO OGGETTO PER GESTIERE COMANDI DOS
    Runtime run = Runtime.getRuntime();
    //COPIO I VARI ELEMENTI NELLA CARTELLA
    run.exec("cmd /c copy ProgettiEclipse\\Prog\\bin\\*.class");
    .
    .

  2. #2
    Da quanto dici potrebbe essere plausibile che il processo di copia venga interrotto quando finisce il main. Per capire se è questo il problema puoi usare un 'Thread.sleep(10000)' prima di uscire dal main e vedere se i file copiati aumentano.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    Ho provato ad aggiungere qualcosa di simile al tuo consiglio... ma non va
    Forse è meglio che posto tutto il metodo:

    //UTILIZZO UNA NUOVA CLASSE PER RICEVERE OPERAZIONI COL MOUSE
    class Copia implements ActionListener {
    //METODO PRINCIPALE DELLA CLASSE
    public void actionPerformed(ActionEvent evento) {
    //RESETTO L'ELEMENTO GRAFICO
    spazio3.setText(" ");
    //CONTROLLO CHE AZIONE EFFETTUARE
    if (bottone1.getText().equals("COPIA")){
    //SE NON VIENE SPECIFICATO L'AMBIENTE NON FA NIENTE
    if ((!(spazio1.getText().equals(""))) && (!(spazio2.getText().equals(""))) && (!(spazio.getText().equals("")))){
    //UTILIZZO BLOCCO try-catch PER EVITARE ECCEZIONI
    try{
    //CREO NUOVO FILE PER VEDERE DOVE SALVARE ELEMENTO
    File cartella = new File("C:\\Nozz Programmi\\Desktop\\Unicam\\Programmazione\\Proget tiEclipse\\" + spazio.getText());
    //CONTROLLO CHE IL PERCORSO DOVE SALVARE L'ELEMENTO ESISTA
    if (cartella.exists()==false)
    //LANCIO ERRORE
    spazio3.setText("ERRORE!!! DIRECTORY NON VALIDA");
    else{
    //CREAZIONE NUOVO FILE PER VEDERE SE LA CLASSE ESISTE
    File classe = new File("C:\\Nozz Programmi\\Desktop\\Unicam\\Programmazione\\Proget tiEclipse\\" + spazio.getText() + "\\bin\\" + spazio1.getText() + ".class");
    //CONTROLLO CHE ESISTA
    if (classe.exists() == false)
    //LANCIO ERRORE
    spazio3.setText("ERRORE!!! CLASSE NON TROVATA");
    else {
    //CREAZIONE NUOVO OGGETTO PER GESTIERE COMANDI DOS
    Runtime run = Runtime.getRuntime();
    //COPIO I VARI ELEMENTI NELLA CARTELLA
    run.exec("cmd /c copy ProgettiEclipse\\" + spazio.getText() + "\\bin\\*.class");
    //RENDO GLI ELEMENTI NON MODIFICABILI
    spazio.setEditable(false);
    spazio1.setEditable(false);
    spazio2.setEditable(false);
    //CAMBIO NOME AL PULSANTE
    bottone1.setText("ELIMINA");
    //RENDO IL PULSANTE DISPONIBILE
    bottone.setEnabled(true);

    Thread t = Thread.currentThread();


    t.sleep(100);



    }//else1
    }//else2
    }catch (IOException a){} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }//if non vuoti
    }//if copia
    else{
    //UTILIZZO BLOCCO try-catch X EVITARE ECCEZIONI
    try{
    //CREAZIONE NUOVO OGGETTO PER GESTIERE COMANDI DOS
    Runtime run = Runtime.getRuntime();
    //CANCELLO TUTTI I FILE CON QUELLA ESTENSIONE
    run.exec("cmd /c del *.class");
    //CANCELLO IL FILE DI APPOGGIO
    run.exec("cmd /c del a.txt");
    }
    catch(IOException a){}
    //CAMBIO NOME AL PULSANTE
    bottone1.setText("COPIA");
    //RENDO IL PULSANTE DISPONIBILE
    bottone.setEnabled(false);
    //RENDO LE SCRITTE VUOTE
    spazio.setText(" ");
    spazio1.setText(" ");
    spazio2.setText(" ");
    spazio3.setText(" ");
    //RENDO I BOTTONI MODIFICABILI
    spazio.setEditable(true);
    spazio1.setEditable(true);
    spazio2.setEditable(true);
    }//else
    }}
    //CREAZIONE OGGETTO CHE RICEVE EVENTO
    ActionListener premiBottone1 = new Copia();
    //COLLEGO L'ESECUZIONE DELLE ISTRUZIONI AL BOTTONE
    bottone1.addActionListener(premiBottone1);


    Si tratta di un metodo che gestisce il click su un bottone (che cambia azione e titolo alternativamente). In 1 caso controllo se nel percorso esistono diversi file e copio gli elementi, nell'altro caso (che funziona sempre) cancello gli elementi

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    Ho inoltre notato che 1 file lo copia dopo 2 minuti anche se ormai l'applicazione è stata chiusa

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.