Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    94

    [Java] classe java che taglia una cartella e la incolla in un'altra

    Salve a tutti..
    ho scritto una classe java che analizza dei file, e se nel file trova che la data di scadenza è minore alla data odierna, cioè il file è gia scaduto devo spostare l'intera cartella dove si trova il file in un'altra cartella..
    il tutto funziona perfettamente tranne lo sostamento della cartella..
    questo è il pezzo di codice che ci interessa ora guardare:
    codice:
    try { 	    Date Scadenza = DataScadenza.parse(DataFinePubbl); 	
                System.out.println("cartella= " + lista[i]); 		
                System.out.println("Scadenza atto = " + 
                DataScadenza.format(Scadenza)); 		     
           	    long differenzaInMs=
            Scadenza.getTime()-DataCorrente.getTime(); 		                                         
           	     if (differenzaInMs < 0){ 	
    		String s = "move C:\\prog_stage\\" + lista[i] + " C:\\prog_stage \\Scaduti"; 	
    	        System.out.println(s); 		        	   	   
                  Runtime.getRuntime().exec(s); 		        	    					} 		            			 
    } catch (ParseException e) { 	
       e.printStackTrace(); 		     } 		
    }
    se io quella stringa s la copio sul terminale funziona , anche se non sposta la cartella ma solo i file che ci sono dentro..
    perchè se lancio la classe no?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quello spazio, prima del backslash, non ci va...

    codice:
    String s = "move C:\\prog_stage\\" + lista[i] + " C:\\prog_stage \\Scaduti"; 
    Questo spazio qui-----------------------------------------------^
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    94
    Originariamente inviato da LeleFT
    Quello spazio, prima del backslash, non ci va...

    codice:
    String s = "move C:\\prog_stage\\" + lista[i] + " C:\\prog_stage \\Scaduti"; 
    Questo spazio qui-----------------------------------------------^
    Ciao.
    scusa non è quello l'errore, avevo cambiato ora il nome della cartella e mi era sfuggito lo spazio..
    il codice è questo scritto giusto e non và:
    codice:
    String s = "move C:\\prog_stage\\" + lista[i] + " C:\\FileScaduti";
    ti ripeto, se io stampo s da eclipse, copio la stringa sulla console, il contenuto della cartella "lista[i]" viene spostato nella cartella FileScaduti.. ma se lancio la classe no

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io, se proprio non vuoi la portabilità, proverei così:

    codice:
    String s = "cmd /c move C:\\prog_stage\\" + lista[i] + "\\*.* C:\\FileScaduti\\";
    Ad ogni modo, perchè non usare direttamente le API messe a disposizione dalla classe File di Java?

    codice:
    // La directory con i file da spostare
    File dirSource = new File("C:/prog_stage/" + lista[i]);
    
    // I file da spostare
    File[] contenutoDaSpostare = dirSource.listFiles();
    
    // La directory di destinazione dei file
    File dirDestinazione = new File("C:/FileScaduti/");
    
    // Sposto i file
    for(File f : contenutoDaSpostare) {
       f.renameTo( new File(dirDestinazione, f.getName()) );
    }
    In realtà bisognerebbe tener conto del boolean di ritorno del metodo renameTo(), per capire se lo spostamento è andato a buon fine oppure no, ma questo è un dettaglio...

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Originariamente inviato da LeleFT
    Io, se proprio non vuoi la portabilità, proverei così:

    codice:
    String s = "cmd /c move C:\\prog_stage\\" + lista[i] + "\\*.* C:\\FileScaduti\\";
    Ad ogni modo, perchè non usare direttamente le API messe a disposizione dalla classe File di Java?

    codice:
    // La directory con i file da spostare
    File dirSource = new File("C:/prog_stage/" + lista[i]);
    
    // I file da spostare
    File[] contenutoDaSpostare = dirSource.listFiles();
    
    // La directory di destinazione dei file
    File dirDestinazione = new File("C:/FileScaduti/");
    
    // Sposto i file
    for(File f : contenutoDaSpostare) {
       f.renameTo( new File(dirDestinazione, f.getName()) );
    }
    In realtà bisognerebbe tener conto del boolean di ritorno del metodo renameTo(), per capire se lo spostamento è andato a buon fine oppure no, ma questo è un dettaglio...

    Ciao.
    Complementi per la soluzione, non mi sarebbe mai venuta in mente

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    94
    Originariamente inviato da LeleFT
    Io, se proprio non vuoi la portabilità, proverei così:

    codice:
    String s = "cmd /c move C:\\prog_stage\\" + lista[i] + "\\*.* C:\\FileScaduti\\";
    Ad ogni modo, perchè non usare direttamente le API messe a disposizione dalla classe File di Java?

    codice:
    // La directory con i file da spostare
    File dirSource = new File("C:/prog_stage/" + lista[i]);
    
    // I file da spostare
    File[] contenutoDaSpostare = dirSource.listFiles();
    
    // La directory di destinazione dei file
    File dirDestinazione = new File("C:/FileScaduti/");
    
    // Sposto i file
    for(File f : contenutoDaSpostare) {
       f.renameTo( new File(dirDestinazione, f.getName()) );
    }
    In realtà bisognerebbe tener conto del boolean di ritorno del metodo renameTo(), per capire se lo spostamento è andato a buon fine oppure no, ma questo è un dettaglio...

    Ciao.
    Ciao! ho seguito il tuo consiglio di usare le API di java e ho fatto in questo modo
    codice:
      // La directory con i file da spostare
          File dirSource = new File("C:/ANPOLIS.TMP/Albo/" + lista[i]);
    
      // I file da spostare
         File[] contenutoDaSpostare = dirSource.listFiles();
    
      // La directory di destinazione dei file
         File dirDestinazione = new File("C:/ANPOLIS.TMP/AlboScaduti/");
    
      // Sposto i file
          for(File fi : contenutoDaSpostare) {
    	fi.renameTo( new File(dirDestinazione, fi.getName()) );}
    ma nn funziona.. cmq vale lo stesso se io nn sposto file ma cartelle???

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Fede865
    Ciao! ho seguito il tuo consiglio di usare le API di java e ho fatto in questo modo

    ma nn funziona.. cmq vale lo stesso se io nn sposto file ma cartelle???
    No. Funziona solo con i file... lo spostamento di una cartella consiste nel creare una nuova cartella nella nuova posizione, spostarne l'eventuale contenuto e rimuovere quella vecchia.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    94
    Originariamente inviato da LeleFT
    No. Funziona solo con i file... lo spostamento di una cartella consiste nel creare una nuova cartella nella nuova posizione, spostarne l'eventuale contenuto e rimuovere quella vecchia.


    Ciao.
    e quindi???
    come dovrei fare per spostare una cartella?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    si comincia leggendo la documentazione della classe file:

    http://download.oracle.com/javase/6/...a/io/File.html

    mkdirs è il metodo che ti viene in contro per la creazione della cartella nuova, delete per la rimozione della vecchia. Tutto il resto è LeleFT
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    94
    Originariamente inviato da Andrea1979
    si comincia leggendo la documentazione della classe file:

    http://download.oracle.com/javase/6/...a/io/File.html

    mkdirs è il metodo che ti viene in contro per la creazione della cartella nuova, delete per la rimozione della vecchia. Tutto il resto è LeleFT
    ok..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.