Publié le 25/08/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Copier un fichier avec NIO

Lorsque Java 1.4 est sorti, un nouveau package a été fourni NIO qui permet entre autre de copier un fichier. La principale amélioration porte sur les performances par rapport à une copie avec deux FileStream et un tampon de copie.

Copier rapidement avec Java NIO

Exemple de copie du fichier fichiersource.txt vers un fichier fichierdest.txt. Une exception est générée si le fichier de destination existe déjà.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 * Copier un fichier avec NIO
 * http://www.fobec.com/java/978/copier-fichier-avec-nio.html
 * Axel 2010
 */
 
public class DiskTools {
 
    public static void fileCopy(File infile, File outfile) throws IOException {
        //Générer une exception si le fichier destination existe déjà
        if (outfile.exists()) {
            throw new IOException("Destination file already exists");
        }
 
        FileChannel inFileChannel = new FileInputStream(infile).getChannel();
        FileChannel outFileChannel = new FileOutputStream(outfile).getChannel();
        try {
            // magic number for Windows, 64Mb - 32Kb)
            int maxCount = (64 * 1024 * 1024) - (32 * 1024);
            long size = inFileChannel.size();
            long offset = 0;
            while (offset < size) {
                offset += inFileChannel.transferTo(offset, maxCount, outFileChannel);
            }
        } finally {
            if (inFileChannel != null) {
                inFileChannel.close();
            }
            if (outFileChannel != null) {
                outFileChannel.close();
            }
        }
    }
 
    public static void main(String[] args) {
        File filesrc=new File("c:fichiersource.txt");
        File filedest=new File("c:fichierdest.txt");
        try {
            DiskTools.fileCopy(filesrc, filedest);
        } catch (IOException ex) {
            Logger.getLogger(DiskTools.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

note: Depuis 2010, la copie de fichier avec NIO a évolué vers la simplification. En effet, le wrapper proposé dans l'exemple ci-dessous est intégré de base dans le package.
par exemple, la copie de deux fichiers peut etre réalisée en 1 ligne de code:
Files.copy (pathSource, pathDest, StandardCopyOption.REPLACE_EXISTING);

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
25/08/2010
Visualisation
vu 1754 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par nel23fx dans java

Bravo pour ces tuto/sources c'est simple et efficasse

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.

Publié par Anis Hidouri dans java

Très bon exemple même si le drivers jdbc comporte quelques erreurs !!!

Publié par Fobec dans php5

Le code PHP sur les boucles a ete corrige dans l'article.
Merci Etiazam !

Publié par FOBEC dans CMS

Un chronomètre, des challenges et l'affichage des meilleurs scores sont prévus. Si ça vous intéresse, laissez moi un p'tit mot !!!