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 1640 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans CMS

Le code source de l'exemple se trouve dans la pièce jointe (Fiche de l'article -> Boutton Telecharger)

Publié par Arthur dans java

Salut!
J'ai repris ton code pour un projet mais en testant le programme rien ne s'affiche. Pourquoi ?
Dois-je mettre a jour quelque chose ? Importer ?
La seule modification que j'...

Publié par nicolasterraes dans tuto

bonjour,
je ne comprends pas cette tape:

Les liens vers les feuilles de style et les fichier js sont declares dans les pages HTML. Modifiez les balises meta ainsi:
Feuille de style:
d...

Publié par fobec dans CMS

faire le menage !!!!

Publié par hhhhh dans java

oooooooooooooooooooo