View Full Version : [java] spostare files
Ciao.
Volevo chiedervi se c'e' qualche metodo che permetta lo spostamento di files, perche' non l'ho trovato. Vorrei evitare la lettura del file originale per poi ricopiarlo in quello di destinazione (cosa che faccio attualmente), ed avere qualcosa di simile a quello che fa windows quando sposti un files all'interno di una partizione (che e' quello che devo fare) cioe' limitarmi a cambiare il link al file lasciandolo nella stessa posizione di disco.
Grazie.
Volevo chiedervi se c'e' qualche metodo che permetta lo spostamento di filesMetodo: public boolean renameTo(File dest) della classe File.
Nonostante il nome, può essere utilizzato anche solo per spostare un file. Leggiti la documentazione del metodo. Il comportamento è dipendente dalla piattaforma!
Per caso c'e' anche un metodo per fare la copia senza doversi fare il metodo (l'ho gia' fatto usando le classi BufferedReader e BufferedWriter, ma se c'e' un metodo apposta tanto meglio)?
Per caso c'e' anche un metodo per fare la copia senza doversi fare il metodo (l'ho gia' fatto usando le classi BufferedReader e BufferedWriter, ma se c'e' un metodo apposta tanto meglio)?No, non c'è un metodo "standard" per copiare un file. Se vuoi fare una copia byte x byte efficiente puoi utilizzare il metodo descritto nel mio Java Tips (vedi firma) nella sezione INPUT/OUTPUT. ;)
Bella pagina, mi potrebbe tornare utile.
Pero' volevo chiederti una cosa: non e' piu' efficente usare le classi BufferedReader e BufferedWriter come nel seguente codice (non ho fatto test, quindi mi limitavo a chiedere)?
String input="io.txt";
String output="tu.txt";
try{
StringBuffer tmp=new StringBuffer();
//LETTURA
BufferedReader inputFile = new BufferedReader(new FileReader(input));
String line="";
while((line=inputFile.readLine())!=null){
tmp.append(line).append("\n");
}
inputFile.close();
//SCRITTURA
BufferedWriter outputFile = new BufferedWriter(new FileWriter(output));
outputFile.write(tmp.toString());
outputFile.close();
}
catch(IOException e){ e.printStackTrace(); }
Facciamo finta che sia uscita la piattaforma Java 1.4 :D
FileChannel source = new FileInputStream(sorgente).getChannel();
FileChannel dest = new FileOutputStream(destinazione).getChannel();
dest.transferFrom(source, 0, dest.size());
sorgente e desinazione possono essere File o percorsi di file espressi come stringhe.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.