web-dev-qa-db-fra.com

java IO=== pour copier un fichier à un autre

J'ai deux objets java.io.file fichier1 et fichier2. Je veux copier le contenu du fichier1 en fichier2. Existe-t-il un moyen standard de le faire sans que je doive créer une méthode qui lit Fichier1 et écrire dans File2

19
Aly

Non, il n'y a pas de méthode intégrée pour le faire. Le plus proche de ce que vous voulez accomplir est la méthode transferFrom de FileOutputStream, comme:

  FileChannel src = new FileInputStream(file1).getChannel();
  FileChannel dest = new FileOutputStream(file2).getChannel();
  dest.transferFrom(src, 0, src.size());

Et n'oubliez pas de gérer des exceptions et de tout fermer dans un bloc finally.

30
João Silva

Si vous voulez être paresseux et que vous vous en sortirez d'écrire un code minimal de code

FileUtils.copyFile(src, dest)

d'Apache Iocommons

24
Maddy

N ° tous les longs =Java programmeur a leur propre courroie utilitaire qui inclut une telle méthode. Voici le mien.

public static void copyFileToFile(final File src, final File dest) throws IOException
{
    copyInputStreamToFile(new FileInputStream(src), dest);
    dest.setLastModified(src.lastModified());
}

public static void copyInputStreamToFile(final InputStream in, final File dest)
        throws IOException
{
    copyInputStreamToOutputStream(in, new FileOutputStream(dest));
}


public static void copyInputStreamToOutputStream(final InputStream in,
        final OutputStream out) throws IOException
{
    try
    {
        try
        {
            final byte[] buffer = new byte[1024];
            int n;
            while ((n = in.read(buffer)) != -1)
                out.write(buffer, 0, n);
        }
        finally
        {
            out.close();
        }
    }
    finally
    {
        in.close();
    }
}
9
Jonathan Feinberg

Depuis Java 7 , vous pouvez utiliser Files.copy() de la bibliothèque standard de Java.

Vous pouvez créer une méthode d'emballage:

public static void copy(String sourcePath, String destinationPath) throws IOException {
    Files.copy(Paths.get(sourcePath), new FileOutputStream(destinationPath));
}

qui peut être utilisé de la manière suivante:

copy("source.txt", "dest.txt");
7

Dans Java 7 Vous pouvez utiliser Files.copy() _ et très important est: N'oubliez pas de fermer la sortie de sortie après la création du nouveau fichier.

OutputStream os = new FileOutputStream(targetFile);
Files.copy(Paths.get(sourceFile), os);
os.close();
4
Linu Radu

Ou utiliser fichiers.copy (fichier1, fichier2) de la bibliothèque de Guava de Google.

1
Andrejs