Java Language
Nowy plik I / O
Szukaj…
Składnia
- Paths.get (najpierw String, String ... więcej) // Tworzy instancję Path na podstawie jej elementów String
- Paths.get (URI uri) // Tworzy instancję Path na podstawie URI
Tworzenie ścieżek
Klasa Path służy do programowego reprezentowania ścieżki w systemie plików (i dlatego może wskazywać zarówno na pliki, jak i katalogi, nawet te nieistniejące)
Ścieżkę można uzyskać za pomocą klasy pomocniczej Paths :
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");
Pobieranie informacji o ścieżce
Informacje o ścieżce można uzyskać za pomocą metod obiektu Path :
toString()zwraca ciąg reprezentujący ścieżkęPath p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"getFileName()zwraca nazwę pliku (a ściślej ostatni element ścieżkiPath p1 = Paths.get("/var/www"); // p1.getFileName() returns "www" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"getNameCount()zwraca liczbę elementów tworzących ścieżkęPath p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2getName(int index)zwraca element o podanym indeksiePath p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"getParent()zwraca ścieżkę katalogu nadrzędnegoPath p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"getRoot()zwraca katalog główny ścieżkiPath p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
Manipulowanie ścieżkami
Łączenie dwóch ścieżek
Ścieżki można łączyć za pomocą metody resolve() . Przekazana ścieżka musi być ścieżką częściową, która nie zawiera elementu głównego.
Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"
Normalizowanie ścieżki
Ścieżki mogą zawierać elementy . (który wskazuje katalog, w którym aktualnie się znajdujesz) i .. (który wskazuje katalog nadrzędny).
Kiedy stosuje się w ścieżce . można usunąć w dowolnym momencie bez zmiany miejsca docelowego ścieżki, a .. można usunąć razem z poprzednim elementem.
W interfejsie API Paths odbywa się to za pomocą metody .normalize() :
Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"
Pobieranie informacji za pomocą systemu plików
Do interakcji z systemem plików używasz metod klasy Files .
Sprawdzanie istnienia
Aby sprawdzić istnienie pliku lub katalogu, do którego prowadzi ścieżka, użyj następujących metod:
Files.exists(Path path)
i
Files.notExists(Path path)
!Files.exists(path) niekoniecznie musi być równa Files.notExists(path) , ponieważ istnieją trzy możliwe scenariusze:
- Istnienie plik lub katalog jest weryfikowana (
existspowracatrueinotExistspowracafalsew tym przypadku) - Nieistnienie pliku lub katalogu jest weryfikowane (
existszwracafalseanotExistszwracatrue) - Nie można zweryfikować istnienia ani nieistnienia pliku lub katalogu (na przykład z powodu ograniczeń dostępu): zarówno
existsinonExistszwracają wartość false.
Sprawdzanie, czy ścieżka wskazuje plik lub katalog
Odbywa się to za pomocą Files.isDirectory(Path path) i Files.isRegularFile(Path path)
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false
Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true
Uzyskiwanie właściwości
Można to zrobić za pomocą następujących metod:
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
Pobieranie typu MIME
Files.probeContentType(Path path)
To próbuje uzyskać typ pliku MIME. Zwraca ciąg typu MIME, taki jak ten:
-
text/plaindla plików tekstowych -
text/htmldla stron HTML -
application/pdfdla plików PDF -
image/pngdla plików PNG
Odczytywanie plików
Pliki mogą być odczytywane bajtowo i liniowo za pomocą klasy Files .
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines() opcjonalnie przyjmuje zestaw znaków jako parametr (domyślnie jest to StandardCharsets.UTF_8 ):
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
Pisanie plików
Pliki można zapisywać bitowo i liniowo za pomocą klasy Files
Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
new String[]{"First line", "Second line", "Third line"});
Files.write(p2, lines);
Files.write(Path path, byte[] bytes)
Istniejące pliki zostaną zastąpione, nieistniejące pliki zostaną utworzone.