Question

J'ai deux objets java.io.File fichier1 et fichier2. Je veux copier le contenu de fichier1 fichier2. Y at-il un moyen standard de faire cela sans avoir à me créer une méthode qui lit fichier1 et écrire à fichier2

Était-ce utile?

La solution

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 suit:

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

Et ne pas oublier de gérer les exceptions et tout près dans un bloc finally.

Autres conseils

Si vous voulez être paresseux et s'enfuir avec l'écriture de code minimal utilisation

FileUtils.copyFile(src, dest)

d'Apache IOCommons

Non. Chaque long temps programmeur Java a sa propre ceinture utilitaire qui comprend 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();
    }
}

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");

Java 7 vous pouvez utiliser Files.copy() et très important est la suivante:. Ne pas oublier de fermer le OutputStream après la création du nouveau fichier

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

Ou utilisez Files.copy ( fichier1, fichier2) de la bibliothèque goyave de Google.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top