nel mio progetto ho usato questo snippet:
Carico il file in un oggetto File e lo passo ad una classe che si occupa della copia.
codice:
public void copyDB() {
try{
java.io.File file1=new java.io.File("Data/camp.dat");
if(file1.exists())
new CopyFile(file1).copyDATFile();
else{
JOptionPane.showMessageDialog(this,"Warning: Impossibile creare copia di backup del file DAT",
"Test", JOptionPane.ERROR_MESSAGE);
}
}
catch(java.io.IOException ioex){
System.err.println("Warning: Errore nella copia di backup del DBFile");
logger.error(ioex.getMessage());
ioex.printStackTrace();
}
}
Classe:
Salvo l'oggetto File facendo al copia e richiamo il metodo:
L'oggetto FileChannel come puoi leggere dal javadoc:
"A channel for reading, writing, mapping, and manipulating a file"
Un oggetto per manipolare un file
Poi da qui in poi dovresti tovare un tuo modo per trasferire.
A me serviva solo fare una copia (nomefile-copia.dat) sulla stessa directory.
Per questo ho preso il file senza estensione, gli ho appeso "-copia.dat" e l'ho salvato.
Il passaggio è facile nel tuo FileChannel dest potrai scrivere
FileChannel dest = new FileOutputStream(path+"inputFile.txt").getChannel();
codice:
public class CopyFile {
private File sfile;
public CopyFile(File sfile) {
this.sfile=sfile;
}
public void copyDATFile() throws IOException{
FileChannel source = new FileInputStream(sfile).getChannel();
String tmp=sfile.getAbsolutePath().substring(0,sfile.getAbsolutePath().length()-4);
FileChannel dest = new FileOutputStream(tmp+"-copia.dat").getChannel();
source.transferTo(0, source.size(), dest);
source.close();
dest.close();
}
}
Ciao.