Java IO для копирования одного Файла в другого

У меня есть два Java.io. Файл возражает file1 и file2. Я хочу скопировать содержание от file1 до file2. Есть ли стандартный способ сделать это без меня имеющий необходимость создать метод, который читает file1 и запись к file2

18
задан Aly 26 March 2010 в 00:00
поделиться

3 ответа

Нет, встроенного метода для этого не существует. Наиболее близким к тому, чего вы хотите добиться, является метод transferFrom из FileOutputStream, например, такой:

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

И не забудьте обработать исключения и закрыть все в блоке finally.

30
ответ дан 30 November 2019 в 05:45
поделиться

Нет. У каждого опытного 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();
    }
}
9
ответ дан 30 November 2019 в 05:45
поделиться

Если вы хотите лениться и писать минимальный код, используйте

FileUtils.copyFile(src, dest)

из Apache IOCommons

24
ответ дан 30 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: