Несколько сценариев требуют, чтобы вы скопировали файл в Java. Возможно, вы создаете простой скрипт для автоматизации процессов файлового менеджера. Вы даже можете написать полноценное приложение, работающее с файлами.
Есть много способов скопировать файл, в зависимости от требуемой производительности, простоты или даже используемой версии Java.
Как копировать файлы с помощью FileInputStream и FileOutputStream
Этот метод работает путем ручного чтения каждого байта данных из файла и записи его в новое место назначения. В отличие от описанного ниже метода Files.copy, вы можете использовать этот метод для всех версий Java, включая Java 6 и более ранние версии.
Он использует класс FileInputStream для чтения байтов из исходного файла и FileOutputStream для записи байтов в место назначения.
- Создайте файл в любом месте на вашем компьютере с именем «SimpleScript.java».
- Откройте файл в текстовом редакторе или IDE и скопируйте следующий базовый код в приложение.
импорт java.io. IOException;
учебный классПростой скрипт{
публичныйстатическийпустотаглавный(строковые аргументы [])бросает IOException {
// Ваш код здесь
}
} - Импортируйте эти дополнительные классы Input Stream и Output Stream в начало файла сразу после первого оператора импорта.
импорт java.io. Файл;
импорт java.io. Входной поток;
импорт java.io. Выходной поток;
импорт java.io. ФайлВходнойПоток;
импорт java.io. ФайлВыходнойПоток; - Создайте новый файл с именем «Copy-File-1.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте любое письменное содержимое внутри файла.
- В той же папке также создайте новый каталог под названием «Destination». Цель состоит в том, чтобы скопировать файл «Copy-File-1.txt» в новую папку.
- Внутри основной функции класса используйте класс File для создания двух новых файловых объектов. Источник, которым будет файл, который вы хотите скопировать, и место назначения, куда вы хотите скопировать файл. Если целевой файл не существует, ваша программа создаст новый.
учебный классПростой скрипт{
публичныйстатическийпустотаглавный(строковые аргументы [])бросает IOException {
// 1-й способ скопировать файл
Источник файла = новый Файл("Копировать-Файл-1.текст");
Назначение файла = новый Файл("Назначение/Копировать-Файл-1.текст");
}
} - После этого создайте объект InputStream и OutputStream.
Входной поток ввода = нулевой;
Выходной поток = нулевой; - Используйте входной поток для чтения данных в байтах и выходной поток для записи данных в новое место.
пытаться {
// Создаем объекты 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("Файл скопирован");
- Чтобы запустить скрипт, откройте командную строку. Перейдите в папку, в которой вы сохранили файл Java, используя команду cd на Командная строка Windows или же Терминал Mac.
CD Рабочий стол
- Чтобы скомпилировать скрипт, сохраните файл Java и запустите Явак команда в командной строке:
javac SimpleScript.java
- Для запуска скрипта используйте Ява команда:
Вы должны увидеть одну строку вывода без ошибок:простой скрипт Java
- Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.
- Откройте файл, чтобы просмотреть содержимое, которое ваша программа скопировала из исходного файла.
Как копировать файлы с помощью Files.copy
Если вы используете Java 7 или более позднюю версию, вы можете использовать метод Files.copy. Этот метод, как правило, является более простой реализацией. Согласно Java-документация, существует несколько перегрузок функции.
Например, метод Files.copy также может использовать входной поток для копирования файлов из одного места в другое, но с помощью метода, использующего меньше кода. Вы также можете использовать пути или указать, как вы хотите, чтобы метод копировал ваш файл.
- Создайте новый файл с именем «Copy-File-2.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте любое письменное содержимое внутри файла.
- В верхней части файла добавьте импорт для файла «java.nio.file. Пути" и "java.nio.file. Файлы».
импорт java.nio.файл. Пути;
импорт java.nio.файл. файлы; - Добавьте две строки, представляющие относительный путь к исходному и целевому файлам. Используйте метод Files.copy, который уже будет обрабатывать логику копирования файла в место назначения.
Строка copySource = "Копировать-Файл-2.текст";
Строка copyDestination = "Пункт назначения/файл-копии-2.текст";пытаться {
Files.copy(Paths.get(copySource), Paths.get(copyDestination));
} ловить (Исключение д) {
System.out.println("Не удалось скопировать файл в место назначения: " + copyDestination + ". Проверять если папка или файл уже существует.");
}
Система.выход.println("2й файл скопирован"); - Запустите скрипт с помощью команд Javac и Java.
- Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.
Как копировать файлы с помощью FileChannel.transferTo()
Согласно Java-документация, этот метод может быть потенциально более быстрым способом копирования файлов. Однако это будет зависеть от того, как вы реализуете функцию.
- Создайте новый файл с именем «Copy-File-3.txt» в той же папке, что и ваш файл SimpleScript.java. Добавьте образец содержимого в этот файл.
- В верхней части SimpleScript.java импортируйте файл «java.nio.channels. FileChannel» вместе с тремя предыдущими распространенными классами, связанными с файлами, из пакета io.
импорт java.io. Файл;
импорт java.io. ФайлВходнойПоток;
импорт java.io. ФайлВыходнойПоток;
импорт java.nio.каналы. Файловый Канал; - Создайте файловые объекты для источника и назначения и используйте их для создания входного потока и выходного потока.
Источник файла = новый Файл("Копировать-Файл-3.текст");
Файл dst = новый Файл("Назначение/Копировать-Файл-3.текст");
FileInputStream inStream = новый FileInputStream (источник);
ФайлВыходнойПоток исходящийПоток = новый ФайлВыходнойПоток (dst); - Используйте метод 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 Файл скопирован"); - Запустите скрипт с помощью команд Javac и Java.
- Перейдите в папку «Назначение», чтобы просмотреть скопированный файл.
Копирование файлов в Java — это только начало
Есть много способов скопировать файл в Java. Три возможных способа включают использование традиционного потокового метода, метода Files.copy или метода transferTo.
Есть много других операций файлового менеджера, которые вы можете выполнять с помощью Java. Некоторые из них включают перемещение файлов, удаление файлов или сжатие файлов. Это может быть полезно для изучения, если вам нужно автоматизировать определенные процессы в файловом менеджере.