Як копіювати файли з одного каталогу до іншого на Java
Джерело:
DZone Я давно займаюся програмуванням на Java, і ви не повірите, але до Java 7 Java API не було методу копіювання файлів. У нас були тільки такі варіанти: написати це самостійно, використовуючи FileInputStream, FileOutputStream та буфер для копіювання байтів з одного в інший; або, що ще краще, використовувати метод
FileChannel.transferTo() або Apache Commons FileUtils, які були порятунком у ті дні і досі існують сьогодні.
JDK зараз еволюціонував, і вже є гідний API для копіювання файлів з одного каталогу до іншого. У цій статті я покажу вам, як ми копіювали файли з одного каталогу до іншого до Java 7, а також сучасний спосіб, який значно спрощує це завдання.
1. Копіювання файлів з одного каталогу до іншого до Java 7
Залежність: Apache Commons IO
1.1 FileUtils.copyFile (джерело файлу, місце призначення файлу) Цей метод копіює файл у нове місце із збереженням позначки часу файлу. Він також копіює вміст вказаного вихідного файлу у вказаний кінцевий файл. Каталог, що містить цільовий файл, створюється,
якщо він не існує . Якщо цільовий файл існує, цей метод перезапише його.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class FileCopyDemo {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destFile = new File("target/HelloWorld.class");
try {
FileUtils.copyFile(srcFile, destFile);
System.out.println("File successfully copied in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output:
System.out.println("File successfully copied in Java");
1.2 Копіювання файлу в каталог із збереженням позначки часу Цей метод копіює вміст вказаного вихідного файлу у файл з тим самим ім'ям у вказаному цільовому каталозі. Цільовий каталог створюється, якщо
він не існує . Якщо цільовий файл існує, цей метод перезапише його.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class Testing {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destDir = new File("target");
try {
FileUtils.copyFileToDirectory(srcFile, destDir);
System.out.println("File successfully copied to destination directory in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
File successfully copied to destination directory in Java
2. Копіювання файлів з одного каталогу до іншого за допомогою Java 7 NIO 2 API.
Java
7 має стандартний метод копіювання файлів:
Files.copy . Він інтегрується з власним введенням-виводом O/S для забезпечення високої продуктивності.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import static java.nio.file.StandardCopyOption.*;
import static java.nio.file.LinkOption.*;
public class FileCopyDemo {
public static void main(String args[]) {
try {
Path bytes = Files.copy(
new Java.io.File("bin/HelloWorld.class").toPath(),
new java.io.File("target/HelloWorld.class").toPath(),
REPLACE_EXISTING,
COPY_ATTRIBUTES,
NOFOLLOW_LINKS);
System.out.println("File successfully copied using Java 7 way");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ви також можете копіювати файли на Java, написавши код з використанням
FileInputStream і
FileOuputStream , але це не обов'язково, якщо у вас встановлена Java 7. В якості альтернативи також зручний клас Apache Commons IO FileUtils. Для високошвидкісного копіювання та передачі файлів ви також можете скористатися перевагами класів java.nio та
FileChannel , але майте на увазі, що Windows має помилку, яка не дозволяє вам передавати більше 64 ГБ даних каналу.
Рядки в Java
Джерело:
Dev.to Як і в інших мовах програмування,
String в Java є послідовністю символів. Але Java не реалізує рядок як масив символів, а розглядає його як повний об'єкт типу
String .
Як створити рядковий об'єкт, використовуючи нове ключове слово та літерали
Існують два способи створення рядкового об'єкта: за допомогою ключового слова new або за допомогою літералів. Буквальне уявлення означає уявлення його значення у вигляді цілого числа або рядка. У наведеному нижче коді показано, як ми можемо створити рядок за допомогою нового ключового слова.
String a = new String();
Як відомо, ключове слово new використовується для створення екземпляра цього класу. Вище ми створабо екземпляр “a” рядка типу без символів. Щоб створити рядок зі значенням у ньому, можна зробити це так.
char name[] = {'x','y','z'}
String a = new String(chars);
Вище ми створабо символьний масив
name [ ] зі значеннями "x", "y", "z", а потім надали цей повний масив рядку "a". Ми використали конструктор класу
String для ініціалізації значення рядка. Як ми бачабо вище, створення рядка з використанням ключового слова New трохи плутає і займає багато часу. Але є справді простий спосіб, і саме тут літерали приходять нам на допомогу.
String s = "xyz";
Ось як ми створюємо рядок Java за допомогою літералів. Для кожного рядкового літералу у програмі Java автоматично створюється об'єкт String з наданим йому початковим значенням. Ви можете використовувати рядковий літерал у будь-якому місці програми, щоб створити рядковий об'єкт.
Приклад рядка
Перед вами код простої програми Hello world із кількома рядками.
public class HelloWorld {
public static void main(String args[]) {
String s1 = new String("Hello World using new keyword");
String s2 = "Hello World using literals";
System.out.println(s1);
System.out.println(s2);
}
}
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ