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?