Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Il Copy che non copia

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    Il Copy che non copia

    Buongiorno a tutti...
    Ho questo problema:
    ho creato una classe Copy per copiare alcuni file :
    codice:
    public static void Copy(String srFile, String dtFile){
    	    try{
    	      File f1 = new File(srFile);
    	      File f2 = new File(dtFile);     
              InputStream in = new FileInputStream(f1);  
              OutputStream out = new FileOutputStream(f2);
    	      byte[] buf = new byte[4096];
    	      int len;
    	      while ((len = in.read(buf)) != -1){
    	        out.write(buf, 0, len);
    	      }
    	      in.close();
    	      out.close();
              }
    	    
    	   catch(FileNotFoundException ex){
    	      System.out.println(ex.getMessage() + " in the specified directory.");
    	      System.exit(0);
    	    }
    	    catch(IOException e){
    	      System.out.println(e.getMessage());      
    	    }
    	  }
    Questo codice funziona sempre tranne nel caso in cui srFile (che mi indica il persorso del file da spostare) si trova nella radice del mio programma (in ./ ). In questo caso la copia del file nel percorso di destinazione dtFile non avviene...come mai?

    Per essere più precisi il percorso del file che vado a copiare lo ottengo con
    codice:
    selectedFile.getAbsolutePath();
    dove selectedFile è un file selezionato attraverso un JFileChooser e quindi il comando che non mi funziona è il seguente

    codice:
    Copy(selectedFile.getAbsolutePath(), "./temp/")
    quando il file si trova in "./"

    Grazie in anticipo

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

    Re: Il Copy che non copia

    Originariamente inviato da Macgiglio
    codice:
    Copy(selectedFile.getAbsolutePath(), "./temp/")
    'temp' è una directory immagino ..... e allora ovvio che non funziona. Non puoi passare una directory alle classi di I/O FileOutputStream, ecc.... Non avrebbe senso.

    Vuoi che il tuo codice possa "capire" che la destinazione è una directory e quindi deve prendere il nome "base" del file sorgente e appenderlo alla directory di destinazione??? Si può benissimo fare ... ma il codice va modificato!
    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 2007
    Messaggi
    137
    ?!? non ho capito.... "./temp/" è una stringa...
    indica il percorso dove copiare il file.....
    Poi non è quella la cosa che non mi funziona.Questo codice funziona sempre tranne nel caso il cui il file selezionato attraverso il JFileChooser si trova nella radice....è questo che non capisco perche non funziona.....

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    ?!? non ho capito.... "./temp/" è una stringa...
    indica il percorso dove copiare il file.....
    Appunto ... una directory. FileOutputStream deve aprire un file ... non una directory!!!

    Originariamente inviato da Macgiglio
    Questo codice funziona sempre
    Se quel 'temp' è una directory non funzionerà mai.


    E comunque la gestione delle eccezioni che hai fatto non è appropriata/corretta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    allora poniamo che il comando sia
    codice:
    Copy(selectedFile.getAbsolutePath(), "./temp/nomefile")
    perche mi da quel problema detto prima?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Macgiglio
    allora poniamo che il comando sia
    codice:
    Copy(selectedFile.getAbsolutePath(), "./temp/nomefile")
    perche mi da quel problema detto prima?
    Forse è una stupidata ma... "./" rispetto a cosa?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    forse non mi sono spiegato bene....diciamo che "./" è il posto dove ho salvato il file jar col quale lancio sto programma.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    forse non mi sono spiegato bene....diciamo che "./" è il posto dove ho salvato il file
    Ma ./ non vuol dire nulla di particolare .... solo "la directory corrente". Punto.

    Se fai:
    Copy(selectedFile.getAbsolutePath(), "./temp/nomefile")

    allora vuol dire: crea un file di nome 'nomefile' nella directory 'temp' presente nella directory "corrente".

    Originariamente inviato da Alex'87
    "./" rispetto a cosa?
    Essendo un path "relativo" è sempre riferito alla directory "corrente".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    giusto, il comando fa proprio questo.....ma non sempre....se il file da copiare si trova nella "directory corrente" non fa la copia......davvero strano...

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da andbin
    Ma ./ non vuol dire nulla di particolare .... solo "la directory corrente". Punto.
    ehm, nel quote hai sbagliato il nome

    Originariamente inviato da andbin
    Essendo un path "relativo" è sempre riferito alla directory "corrente".
    Oddio, avevo letto giusto ma ci ho capito un'altra cosa
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.