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

Publié par ING_BIO dans CMS

tres bonnes aide merci

Publié par pat59 dans CMS

j espere que le jeu vas fonctionner car vous le donnez mais il est bloqué snifff

Publié par Ludwig dans tuto

Bonjour,
Il me semble que les plugins de gestion d'images sont payants pour TinyMCE et CKeditor, est-ce toujours le cas ?
Il manque amha l'excellent Xinha dans cette liste, qui lui est Open Sour...

Publié par Fobec dans logiciel

Souhaitez-vous d'informations sur le logiciel foWhoisClient ou sur l'utilisation des Whois ?

Publié par options binaires dans php5

genial l'outil ! merci