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?