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

Есть много способов скопировать файл, в зависимости от требуемой производительности, простоты или даже используемой версии Java.

Как копировать файлы с помощью FileInputStream и FileOutputStream

Этот метод работает путем ручного чтения каждого байта данных из файла и записи его в новое место назначения. В отличие от описанного ниже метода Files.copy, вы можете использовать этот метод для всех версий Java, включая Java 6 и более ранние версии.

Он использует класс FileInputStream для чтения байтов из исходного файла и FileOutputStream для записи байтов в место назначения.

  1. Создайте файл в любом месте на вашем компьютере с именем «SimpleScript.java».
  2. Откройте файл в текстовом редакторе или IDE и скопируйте следующий базовый код в приложение.
    импорт java.io. IOException;

    учебный классПростой скрипт

    instagram viewer
    {
    публичныйстатическийпустотаглавный(строковые аргументы [])бросает IOException {
    // Ваш код здесь
    }
    }

  3. Импортируйте эти дополнительные классы Input Stream и Output Stream в начало файла сразу после первого оператора импорта.
    импорт java.io. Файл;
    импорт java.io. Входной поток;
    импорт java.io. Выходной поток;
    импорт java.io. ФайлВходнойПоток;
    импорт java.io. ФайлВыходнойПоток;
  4. Создайте новый файл с именем «Copy-File-1.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте любое письменное содержимое внутри файла.
  5. В той же папке также создайте новый каталог под названием «Destination». Цель состоит в том, чтобы скопировать файл «Copy-File-1.txt» в новую папку.
  6. Внутри основной функции класса используйте класс File для создания двух новых файловых объектов. Источник, которым будет файл, который вы хотите скопировать, и место назначения, куда вы хотите скопировать файл. Если целевой файл не существует, ваша программа создаст новый.
    учебный классПростой скрипт{ 
    публичныйстатическийпустотаглавный(строковые аргументы [])бросает IOException {
    // 1-й способ скопировать файл
    Источник файла = новый Файл("Копировать-Файл-1.текст");
    Назначение файла = новый Файл("Назначение/Копировать-Файл-1.текст");
    }
    }
  7. После этого создайте объект InputStream и OutputStream.
    Входной поток ввода = нулевой;
    Выходной поток = нулевой;
  8. Используйте входной поток для чтения данных в байтах и ​​выходной поток для записи данных в новое место.
    пытаться {
    // Создаем объекты FileInputStream и FileOutputStream
    ввод = новый FileInputStream (источник);
    выход = новый FileOutputStream (назначение);
    байт[] буф = новыйбайт[1024];
    инт байтыпрочитано;

    // Записываем байты в место назначения
    пока ((bytesRead = input.read (buf)) > 0) {
    output.write(buf, 0, байтпрочитано);
    }
    } ловить (IOException e) {
    e.printStackTrace();
    System.out.println("Не удалось скопировать файл в место назначения: " + destination.getPath() + ". Проверять если папка или файл уже существует.");
    } в конце концов {
    // Закрываем потоки
    если (введите != нулевой) {
    ввод.закрыть();
    }

    если (выход! = нулевой) {
    выход.закрыть();
    }
    }

    System.out.println("Файл скопирован");

  9. Чтобы запустить скрипт, откройте командную строку. Перейдите в папку, в которой вы сохранили файл Java, используя команду cd на Командная строка Windows или же Терминал Mac.
    CD Рабочий стол
  10. Чтобы скомпилировать скрипт, сохраните файл Java и запустите Явак команда в командной строке:
    javac SimpleScript.java
  11. Для запуска скрипта используйте Ява команда:
    простой скрипт Java
    Вы должны увидеть одну строку вывода без ошибок:
  12. Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.
  13. Откройте файл, чтобы просмотреть содержимое, которое ваша программа скопировала из исходного файла.

Как копировать файлы с помощью Files.copy

Если вы используете Java 7 или более позднюю версию, вы можете использовать метод Files.copy. Этот метод, как правило, является более простой реализацией. Согласно Java-документация, существует несколько перегрузок функции.

Например, метод Files.copy также может использовать входной поток для копирования файлов из одного места в другое, но с помощью метода, использующего меньше кода. Вы также можете использовать пути или указать, как вы хотите, чтобы метод копировал ваш файл.

  1. Создайте новый файл с именем «Copy-File-2.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте любое письменное содержимое внутри файла.
  2. В верхней части файла добавьте импорт для файла «java.nio.file. Пути" и "java.nio.file. Файлы».
    импорт java.nio.файл. Пути;
    импорт java.nio.файл. файлы;
  3. Добавьте две строки, представляющие относительный путь к исходному и целевому файлам. Используйте метод Files.copy, который уже будет обрабатывать логику копирования файла в место назначения.
    Строка copySource = "Копировать-Файл-2.текст";
    Строка copyDestination = "Пункт назначения/файл-копии-2.текст";

    пытаться {
    Files.copy(Paths.get(copySource), Paths.get(copyDestination));
    } ловить (Исключение д) {
    System.out.println("Не удалось скопировать файл в место назначения: " + copyDestination + ". Проверять если папка или файл уже существует.");
    }
    Система.выход.println("2й файл скопирован");

  4. Запустите скрипт с помощью команд Javac и Java.
  5. Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.

Как копировать файлы с помощью FileChannel.transferTo()

Согласно Java-документация, этот метод может быть потенциально более быстрым способом копирования файлов. Однако это будет зависеть от того, как вы реализуете функцию.

  1. Создайте новый файл с именем «Copy-File-3.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте образец содержимого в этот файл.
  2. В верхней части SimpleScript.java импортируйте файл «java.nio.channels. FileChannel» вместе с тремя предыдущими распространенными классами, связанными с файлами, из пакета io.
    импорт java.io. Файл;
    импорт java.io. ФайлВходнойПоток;
    импорт java.io. ФайлВыходнойПоток;
    импорт java.nio.каналы. Файловый Канал;
  3. Создайте файловые объекты для источника и назначения и используйте их для создания входного потока и выходного потока.
    Источник файла = новый Файл("Копировать-Файл-3.текст");
    Файл dst = новый Файл("Назначение/Копировать-Файл-3.текст");
    FileInputStream inStream = новый FileInputStream (источник);
    ФайлВыходнойПоток исходящийПоток = новый ФайлВыходнойПоток (dst);
  4. Используйте метод TransferTo из класса FileChannel, чтобы скопировать файл в место назначения.
    пытаться {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo (0, inChannel.size(), outChannel);
    } ловить (Исключение д) {
    System.out.println("Не удалось скопировать файл в место назначения: " + dst.getPath() + ". Проверять если папка или файл уже существует.");
    } в конце концов {
    // Закрываем потоки
    inStream.close();
    outStream.close();
    }
    Система.выход.println("3rd Файл скопирован");
  5. Запустите скрипт с помощью команд Javac и Java.
  6. Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.

Копирование файлов в Java — это только начало

Есть много способов скопировать файл в Java. Три возможных способа включают использование традиционного потокового метода, метода Files.copy или метода transferTo.

Есть много других операций файлового менеджера, которые вы можете выполнять с помощью Java. Некоторые из них включают перемещение файлов, удаление файлов или сжатие файлов. Это может быть полезно для изучения, если вам нужно автоматизировать определенные процессы в файловом менеджере.