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
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
.
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
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();
}
}
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");
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();
Ou utiliser fichiers.copy (fichier1, fichier2) de la bibliothèque de Guava de Google.