Move a file
/**
*
DEScribe - A Discrete Experience Sampling cross platform application
Copyright (C) 2011
Sbastien Faure <sebastien.faure3@gmail.com>,
Bertrand Gros <gros.bertrand@gmail.com>,
Yannick Prie <yannick.prie@univ-lyon1.fr>.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
//package api.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Class FileTools.java
* @description Tools for files
* @author Sbastien Faure <sebastien.faure3@gmail.com>
* @author Bertrand Gros <gros.bertrand@gmail.com>
* @version 2011-02-02
*/
public class FileTools {
/** copie le fichier source dans le fichier resultat
* retourne vrai si cela russit
*/
public static boolean copyFile(File source, File dest){
try{
// Declaration et ouverture des flux
java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
try{
java.io.FileOutputStream destinationFile = null;
try{
destinationFile = new FileOutputStream(dest);
// Lecture par segment de 0.5Mo
byte buffer[] = new byte[512 * 1024];
int nbLecture;
while ((nbLecture = sourceFile.read(buffer)) != -1){
destinationFile.write(buffer, 0, nbLecture);
}
} finally {
destinationFile.close();
}
} finally {
sourceFile.close();
}
} catch (IOException e){
e.printStackTrace();
return false; // Erreur
}
return true; // Rsultat OK
}
/**
* Dplace le fichier source dans le fichier rsultat
*/
public static boolean moveFile(File source,File destination) {
if( !destination.exists() ) {
// On essaye avec renameTo
boolean result = source.renameTo(destination);
if( !result ) {
// On essaye de copier
result = true;
result &= copyFile(source,destination);
if(result) result &= source.delete();
} return(result);
} else {
// Si le fichier destination existe, on annule ...
return(false);
}
}
}
Related examples in the same category