PDA

View Full Version : [JAVA]copiare un' immagine da una directory ad in'altra


bobby1112
26-05-2009, 11:35
Ciao ragazzi ecco il mio problema,
dovrei copiare un' immagine (.png|.jpg|.gpeg)in java da una directory ad un'altra sapete darmi qualche suggerimento ciao:confused:

PGI-Bis
26-05-2009, 16:01
Un modo breve è usare il metodo renameTo di File.

File source = new File("c:\\documenti\\prova.bmp");
File dest = new File("x:\\immagini\\prova.bmp");
boolean done = source.renameTo(dest);

se "done" è false allora il trasferimento non è andato a buon fine. Il problema è che si sa il perchè: l'implementazione di renameTo appare essere fortemente dipendente dalla piattaforma.

Altrimenti puoi usare il metodo transferTo (o transferFrom) di FileChannel. Un metodo che trasferisce un File source in un File dest potrebbe essere:

void transfer(File source, File dest) throws IOException {
FileChannel in = null;
FileChannel out = null;
try {
in = new FileInputStream(source).getChannel();
out = new FileOutputStream(dest).getChannel();
long pos = 0;
long max = in.size();
while(pos < max) {
pos += in.transferTo(pos, max - pos, out);
}
} finally {
try {
if(in != null) in.close();
} finally {
if(out != null) out.close();
}
}
}

bobby1112
26-05-2009, 21:55
ma il metodo transferfrom() vale solo per i file di testo o anche per le immaggini?
il metodo renameto() non va bene perchè il file viene eliminato dalla cartella sorgente io invece ne voglio fare una copia
ciao

PGI-Bis
26-05-2009, 22:03
vale per tutto quello che è fatto di bit. Un file immagine è uguale a un file di testo. Cambia l'interpretazione che può dare un programma dei bit di cui è composto. L'atto di trasferire un file da un altro non richiede un'interpretazione dei dati o, meglio, non richiede un'interpretazione basata su convenzioni esterne. Quindi funziona.