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.
Classe: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(); } }
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();
Ciao.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(); } }

Rispondi quotando