Няколко сценария изискват да копирате файл в Java. Може да създавате прост скрипт за автоматизиране на процеси за файлов мениджър. Може дори да пишете пълноценно приложение, което работи с файлове.
Има много начини, по които можете да копирате файл, в зависимост от необходимата ви производителност, простота или дори коя версия на Java използвате.
Как да копирате файлове с помощта на FileInputStream и FileOutputStream
Този метод работи чрез ръчно четене на всеки байт данни от файла и записването му на ново местоназначение. За разлика от метода Files.copy по-долу, можете да използвате този метод за всички версии на Java, включително Java 6 и по-стари.
Той използва класа FileInputStream за четене на байтове от изходен файл и FileOutputStream за запис на байтове към дестинацията.
- Създайте файл навсякъде на вашия компютър, наречен "SimpleScript.java".
- Отворете файла в текстов редактор или IDE и копирайте следния основен код в приложението.
импортиране java.io. IOException;
класSimpleScript{
публиченстатиченневалиденосновен(Аргументи на низ [])хвърля IOException {
// Вашият код тук
}
} - Импортирайте тези допълнителни класове Input Stream и Output Stream в горната част на файла, точно след първия оператор за импортиране.
импортиране java.io. файл;
импортиране java.io. InputStream;
импортиране java.io. OutputStream;
импортиране java.io. FileInputStream;
импортиране java.io. FileOutputStream; - Създайте нов файл, наречен "Copy-File-1.txt", в същата папка като вашия файл SimpleScript.java. Добавете всяко писмено съдържание във файла.
- В същата папка създайте и нова директория, наречена „Дестинация“. Целта е да копирате файла "Copy-File-1.txt" в новата папка.
- В основната функция на класа използвайте класа File, за да създадете два нови файлови обекта. Източникът, който ще бъде файлът, който искате да копирате, и дестинацията, която ще бъде мястото, където искате да копирате файла. Ако целевият файл не съществува, вашата програма ще създаде нов.
класSimpleScript{
публиченстатиченневалиденосновен(Аргументи на низ [])хвърля IOException {
// 1-ви начин за копиране на файл
Източник на файл = нов Файл ("Копиране-файл-1.текст");
Дестинация на файла = нов File("Destination/Copy-File-1.текст");
}
} - След това създайте обект InputStream и OutputStream.
InputStream input = нула;
OutputStream output = нула; - Използвайте входния поток, за да прочетете данните в байтове, и изходния поток, за да запишете данните на новото място.
опитвам {
// Създаване на обекти FileInputStream и FileOutputStream
вход = нов FileInputStream (източник);
изход = нов FileOutputStream (дестинация);
байт[] buf = новбайт[1024];
вътр bytesRead;// Записване на байтове към дестинацията
докато ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} улов (IOException e) {
e.printStackTrace();
System.out.println("Не може да копира файла до дестинацията: " + destination.getPath() + ". Проверете ако папката или файлът вече съществува.");
} накрая {
// Затваряне на потоците
ако (въвеждане!= нула) {
input.close();
}ако (изход != нула) {
изход.затвори();
}
}System.out.println("Файлът е копиран");
- За да стартирате скрипта, отворете команден ред. Отидете до папката, в която сте съхранили вашия Java файл, като използвате командата cd на Команден ред на Windows или терминала на Mac.
cd работен плот
- За да компилирате скрипта, запишете Java файла и стартирайте Явац команда в командния ред:
javac SimpleScript.java
- За да стартирате скрипта, използвайте Java команда:
Трябва да видите един ред изход без грешки:java SimpleScript
- Отидете до вашата папка „Destination“, за да видите копирания файл.
- Отворете файла, за да видите съдържанието, което вашата програма е копирала от оригиналния файл.
Как да копирате файлове с помощта на Files.copy
Ако използвате Java 7 или по-нова версия, можете да използвате метода Files.copy. Този метод обикновено е по-проста реализация. Според Java документация, има множество претоварвания за функцията.
Например методът Files.copy може също да използва входен поток за копиране на файлове от едно местоположение на друго, но чрез метод, използващ по-малко код. Можете също да използвате Paths или да посочите сами как искате методът да копира вашия файл.
- Създайте нов файл, наречен "Copy-File-2.txt", в същата папка като вашия файл SimpleScript.java. Добавете всяко писмено съдържание във файла.
- В горната част на файла добавете импортирания за „java.nio.file. Пътища" и "java.nio.file. Файлове" класове.
импортиране java.nio.file. Пътеки;
импортиране java.nio.file. файлове; - Добавете два низа, представляващи относителния файлов път за изходния файл и дестинацията. Използвайте метода Files.copy, който вече ще обработва логиката за копиране на файла до дестинацията.
String copySource = "Copy-File-2.текст";
Низ copyDestination = "Destination/Copy-File-2.текст";опитвам {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} улов (Изключение e) {
System.out.println("Не може да копира файла до дестинацията: " + copyDestination + ". Проверете ако папката или файлът вече съществува.");
}
System.out.println("2nd Файлът е копиран"); - Стартирайте скрипта с помощта на командите Javac и Java.
- Отидете до вашата папка „Destination“, за да видите копирания файл.
Как да копирате файлове с помощта на FileChannel.transferTo()
Според Java документация, този метод може да бъде потенциално по-бърз начин за копиране на файлове. Това обаче ще зависи от начина, по който изпълнявате функцията.
- Създайте нов файл, наречен "Copy-File-3.txt", в същата папка като вашия файл SimpleScript.java. Добавете примерно съдържание към този файл.
- В горната част на SimpleScript.java импортирайте файла „java.nio.channels. FileChannel" клас заедно с три от предишните често срещани класове, свързани с файлове от пакета io.
импортиране java.io. файл;
импортиране java.io. FileInputStream;
импортиране java.io. FileOutputStream;
импортиране java.nio.channels. FileChannel; - Създайте файлови обекти за източника и дестинацията и ги използвайте, за да създадете входен поток и изходен поток.
Файл src = нов Файл ("Копиране-файл-3.текст");
Файл dst = нов File("Destination/Copy-File-3.текст");
FileInputStream inStream = нов FileInputStream (src);
FileOutputStream outStream = нов FileOutputStream (dst); - Използвайте метода TransferTo от класа FileChannel, за да копирате файла до местоназначението му.
опитвам {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} улов (Изключение e) {
System.out.println("Не може да копира файла до дестинацията: " + dst.getPath() + ". Проверете ако папката или файлът вече съществува.");
} накрая {
// Затваряне на потоците
inStream.close();
outStream.close();
}
System.out.println("3rd Файлът е копиран"); - Стартирайте скрипта с помощта на командите Javac и Java.
- Отидете до вашата папка „Destination“, за да видите копирания файл.
Копирането на файлове в Java е само началото
Има много начини, по които можете да копирате файл в Java. Три възможни начина включват използването на традиционния метод на поток, метода Files.copy или метода transferTo.
Има много други операции с файловия мениджър, които можете да извършвате с помощта на Java. Някои от тях включват преместване на файлове, изтриване на файлове или компресиране на файлове. Те могат да бъдат полезни, за да научите, ако трябва да автоматизирате определени процеси във файловия мениджър.