Как копировать файлы из одного каталога в другой на 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;
/**
* Java program to copy a file from one directory to another e.g. from src to dest
*
* @author Javin
*/
public class FileCopyDemo {
public static void main(String args[]) {
// Using Apache Commons FileUtils class
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;
/**
* Java program to copy a file from one directory to another like from src to dest
*
* @author Javin Paul
*/
public class Testing {
public static void main(String args[]) {
// Using Apache Commons FileUtils class
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.*;
/**
* Java program to copy file using Java 7 Files.copy() method
*
* @author Javin Paul
*/
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) {
// TODO Auto-generated catch block
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"); // Using new keyword
String s2 = "Hello World using literals";
System.out.println(s1);
System.out.println(s2);
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ