Java NIO - файл
Пакет Java NIO предоставляет еще один служебный API с именем Files, который в основном используется для управления файлами и каталогами с помощью своих статических методов, которые в основном работают с объектом Path.
Как упоминалось в руководстве по Path, интерфейс Path вводится в пакете Java NIO во время версии Java 7 в пакете файлов. Таким образом, это руководство предназначено для того же пакета File.
Этот класс состоит исключительно из статических методов, которые работают с файлами, каталогами или другими типами файлов. В большинстве случаев определенные здесь методы будут делегировать соответствующему провайдеру файловой системы для выполнения файловых операций.
В классе Files определено множество методов, которые также можно прочитать из документации Java. В этом руководстве мы попытались охватить некоторые важные методы среди всех методов класса Java NIO Files.
Важные методы класса Files.
Ниже приведены важные методы, определенные в классе Java NIO Files.
createFile(Path filePath, FileAttribute attrs) - Класс Files предоставляет этот метод для создания файла с использованием указанного пути.
пример
package com.java.nio;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateFile {
public static void main(String[] args) {
//initialize Path object
Path path = Paths.get("D:file.txt");
//create file
try {
Path createdFilePath = Files.createFile(path);
System.out.println("Created a file at : "+createdFilePath);
}
catch (IOException e) {
e.printStackTrace();
}
}
}
Вывод
Created a file at : D:\data\file.txt
copy(InputStream in, Path target, CopyOption… options) - Этот метод используется для копирования всех байтов из указанного входного потока в указанный целевой файл и возвращает количество прочитанных или записанных байтов в виде длинного значения. LinkOption для этого параметра со следующими значениями:
COPY_ATTRIBUTES - скопировать атрибуты в новый файл, например, атрибут времени последнего изменения.
REPLACE_EXISTING - заменить существующий файл, если он существует.
NOFOLLOW_LINKS - Если файл является символической ссылкой, то копируется сама ссылка, а не цель ссылки.
пример
package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
public class WriteFile {
public static void main(String[] args) {
Path sourceFile = Paths.get("D:file.txt");
Path targetFile = Paths.get("D:fileCopy.txt");
try {
Files.copy(sourceFile, targetFile,
StandardCopyOption.REPLACE_EXISTING);
}
catch (IOException ex) {
System.err.format("I/O Error when copying file");
}
Path wiki_path = Paths.get("D:fileCopy.txt");
Charset charset = Charset.forName("ISO-8859-1");
try {
List<String> lines = Files.readAllLines(wiki_path, charset);
for (String line : lines) {
System.out.println(line);
}
}
catch (IOException e) {
System.out.println(e);
}
}
}
Вывод
To be or not to be?
createDirectories(Path dir, FileAttribute<?>...attrs) - Этот метод используется для создания каталогов по заданному пути путем создания всех несуществующих родительских каталогов.
delete(Path path) - Этот метод используется для удаления файла по указанному пути. Он генерирует исключение NoSuchFileException, если файл не существует по указанному пути или если файл является каталогом, и он не может быть пустым и не может быть удален.
exists(Path path) - Этот метод используется для проверки, существует ли файл по указанному пути, и если файл существует, он вернет true, иначе он вернет false.
readAllBytes(Path path) - Этот метод используется для чтения всех байтов из файла по заданному пути и возвращает массив байтов, содержащий байты, прочитанные из файла.
пример
package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class ReadFile {
public static void main(String[] args) {
Path wiki_path = Paths.get("D:file.txt");
Charset charset = Charset.forName("ISO-8859-1");
try {
List<String> lines = Files.readAllLines(wiki_path, charset);
for (String line : lines) {
System.out.println(line);
}
}
catch (IOException e) {
System.out.println(e);
}
}
}
Вывод
Welcome to file.
size(Path path) - Этот метод используется для получения размера файла по указанному пути в байтах.
write(Path path, byte[] bytes, OpenOption… options) - Этот метод используется для записи байтов в файл по указанному пути.
пример
package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class WriteFile {
public static void main(String[] args) {
Path path = Paths.get("D:file.txt");
String question = "To be or not to be?";
Charset charset = Charset.forName("ISO-8859-1");
try {
Files.write(path, question.getBytes());
List<String> lines = Files.readAllLines(path, charset);
for (String line : lines) {
System.out.println(line);
}
}
catch (IOException e) {
System.out.println(e);
}
}
}
Вывод
To be or not to be?