Копирование файлов из одного каталога в другой в Java

Используйте символ \n для символа новой строки.

document.write("\n");

У вас также может быть несколько:

document.write("\n\n\n"); // 3 new lines!  My oh my!

Однако, если это визуализация в HTML, вам понадобится использовать тег HTML для новой строки:

document.write("<br>");

Строка Hello\n\nTest в вашем источнике будет выглядеть так:

Hello!

Test

Строка Hello<br><br>Test будет выглядеть так в HTML-источнике:

Hello<br><br>Test

HTML-код будет отображаться как разрывы строк для человека, просматривающего страницу, \n просто отбрасывает текст до следующей строки в источнике (если он находится на странице HTML).

141
задан akarnokd 18 July 2009 в 11:58
поделиться

7 ответов

На данный момент это должно решить вашу проблему.

File source = new File("H:\\work-temp\\file");
File dest = new File("H:\\work-temp\\file2");
try {
    FileUtils.copyDirectory(source, dest);
} catch (IOException e) {
    e.printStackTrace();
}

Класс FileUtils из библиотеки apache commons-io , доступно начиная с версии 1.2.

Использование сторонних инструментов вместо написания всех утилит самостоятельно кажется лучшей идеей. Это может сэкономить время и другие ценные ресурсы.

161
ответ дан 23 November 2019 в 22:41
поделиться

Классы NIO делают это довольно просто.

http://www.javalobby.org/java/forums/t17036.html

1
ответ дан 23 November 2019 в 22:41
поделиться

В стандартном API (пока) нет метода копирования файлов. Возможны следующие варианты:

  • Напишите это самостоятельно, используя FileInputStream, FileOutputStream и буфер для копирования байтов из одного в другой - или еще лучше, используйте FileChannel.transferTo ()
  • User Apache Commons ' FileUtils
  • Подождите NIO2 в Java 7
39
ответ дан 23 November 2019 в 22:41
поделиться

Приведенный ниже пример из Советы по Java довольно прост. С тех пор я переключился на Groovy для операций с файловой системой - намного проще и элегантнее. Но вот советы по Java, которые я использовал в прошлом. В нем отсутствует надежная обработка исключений, необходимая для защиты от ошибок.

 public void copyDirectory(File sourceLocation , File targetLocation)
    throws IOException {

        if (sourceLocation.isDirectory()) {
            if (!targetLocation.exists()) {
                targetLocation.mkdir();
            }

            String[] children = sourceLocation.list();
            for (int i=0; i<children.length; i++) {
                copyDirectory(new File(sourceLocation, children[i]),
                        new File(targetLocation, children[i]));
            }
        } else {

            InputStream in = new FileInputStream(sourceLocation);
            OutputStream out = new FileOutputStream(targetLocation);

            // Copy the bits from instream to outstream
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
        }
    }
26
ответ дан 23 November 2019 в 22:41
поделиться

Если вы хотите скопировать файл, а не перемещать его, вы можете написать такой код.

private static void copyFile(File sourceFile, File destFile)
        throws IOException {
    if (!sourceFile.exists()) {
        return;
    }
    if (!destFile.exists()) {
        destFile.createNewFile();
    }
    FileChannel source = null;
    FileChannel destination = null;
    source = new FileInputStream(sourceFile).getChannel();
    destination = new FileOutputStream(destFile).getChannel();
    if (destination != null && source != null) {
        destination.transferFrom(source, 0, source.size());
    }
    if (source != null) {
        source.close();
    }
    if (destination != null) {
        destination.close();
    }

}
19
ответ дан 23 November 2019 в 22:41
поделиться

Похоже, вы ищете простое решение (хорошая вещь). Я рекомендую использовать Apache Common FileUtils.copyDirectory :

Копирует весь каталог в новый место с сохранением дат файла.

Этот метод копирует указанный каталог и все его дочерние каталоги и файлы в указанные пункт назначения. Пункт назначения - это новое местонахождение и название каталог.

Целевой каталог создан. если его не существует. Если целевой каталог действительно существует, тогда этот метод объединяет источник с место назначения, с источником, принимающим приоритет.

Ваш код может выглядеть красивым и простым, например:

File trgDir = new File("/tmp/myTarget/");
File srcDir = new File("/tmp/mySource/");

FileUtils.copyDirectory(srcDir, trgDir);
7
ответ дан 23 November 2019 в 22:41
поделиться

вы используете renameTo () - не очевидно, я знаю ... но это Java-эквивалент move ...

-4
ответ дан 23 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

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