Java NIO - plik

Pakiet Java NIO zapewnia jeszcze jedno narzędzie API o nazwie Pliki, które jest zasadniczo używane do manipulowania plikami i katalogami przy użyciu statycznych metod, które działają głównie na obiekcie Path.

Jak wspomniano w samouczku dotyczącym ścieżki, interfejs ścieżki jest wprowadzany w pakiecie Java NIO w wersji Java 7 w pakiecie plików, więc ten samouczek dotyczy tego samego pakietu plików.

Ta klasa składa się wyłącznie z metod statycznych, które działają na plikach, katalogach lub innych typach plików. W większości przypadków metody zdefiniowane w tym miejscu delegują do powiązanego dostawcy systemu plików wykonywanie operacji na plikach.

Istnieje wiele metod zdefiniowanych w klasie Files, które można również odczytać z dokumentacji Java. W tym samouczku staraliśmy się omówić niektóre z ważnych metod spośród wszystkich metod klasy Java NIO Files.

Ważne metody klasy Files.

Poniżej przedstawiono ważne metody zdefiniowane w klasie Java NIO Files.

  • createFile(Path filePath, FileAttribute attrs) - Klasa Files zapewnia tę metodę tworzenia pliku przy użyciu określonej ścieżki.

Przykład

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();
      }
   }
}

Wynik

Created a file at : D:\data\file.txt
  • copy(InputStream in, Path target, CopyOption… options) - Ta metoda jest używana do kopiowania wszystkich bajtów z określonego strumienia wejściowego do określonego pliku docelowego i zwraca liczbę bajtów odczytanych lub zapisanych jako długa wartość.LinkOption dla tego parametru z następującymi wartościami -

    • COPY_ATTRIBUTES - skopiuj atrybuty do nowego pliku, np. Atrybut czasu ostatniej modyfikacji.

    • REPLACE_EXISTING - zamień istniejący plik, jeśli istnieje.

    • NOFOLLOW_LINKS - Jeśli plik jest dowiązaniem symbolicznym, kopiowane jest samo łącze, a nie cel łącza.

Przykład

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);
      }
   }	
}

Wynik

To be or not to be?
  • createDirectories(Path dir, FileAttribute<?>...attrs) - Ta metoda jest używana do tworzenia katalogów przy użyciu podanej ścieżki poprzez tworzenie wszystkich nieistniejących katalogów nadrzędnych.

  • delete(Path path) - Ta metoda służy do usuwania pliku z określonej ścieżki. Wyrzuca NoSuchFileException, jeśli plik nie istnieje w określonej ścieżce lub jeśli plik jest katalogiem i nie może być pusty i nie można go usunąć.

  • exists(Path path) - Ta metoda jest używana do sprawdzenia, czy plik istnieje w określonej ścieżce i jeśli plik istnieje, zwróci wartość true, w przeciwnym razie zwróci wartość false.

  • readAllBytes(Path path) - Ta metoda służy do odczytu wszystkich bajtów z pliku pod podaną ścieżką i zwraca tablicę bajtów zawierającą bajty odczytane z pliku.

Przykład

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);
      }
   }	
}

Wynik

Welcome to file.
  • size(Path path) - Ta metoda służy do pobrania rozmiaru pliku w określonej ścieżce w bajtach.

  • write(Path path, byte[] bytes, OpenOption… options) - Ta metoda służy do zapisywania bajtów do pliku w określonej ścieżce.

Przykład

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);
      }
   }
}

Wynik

To be or not to be?