У меня есть два Java.io. Файл возражает file1 и file2. Я хочу скопировать содержание от file1 до file2. Есть ли стандартный способ сделать это без меня имеющий необходимость создать метод, который читает file1 и запись к file2
Нет, встроенного метода для этого не существует. Наиболее близким к тому, чего вы хотите добиться, является метод transferFrom
из FileOutputStream
, например, такой:
FileChannel src = new FileInputStream(file1).getChannel();
FileChannel dest = new FileOutputStream(file2).getChannel();
dest.transferFrom(src, 0, src.size());
И не забудьте обработать исключения и закрыть все в блоке finally
.
Нет. У каждого опытного Java-программиста есть собственный пояс служебных программ, включающий такой метод. Вот мой.
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();
}
}
Если вы хотите лениться и писать минимальный код, используйте
FileUtils.copyFile(src, dest)
из Apache IOCommons