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żki

    Path 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 2
    
  • getName(int index) zwraca element o podanym indeksie

    Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
    
  • getParent() zwraca ścieżkę katalogu nadrzędnego

    Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
    
  • getRoot() zwraca katalog główny ścieżki

    Path 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 ( exists powraca true i notExists powraca false w tym przypadku)
  • Nieistnienie pliku lub katalogu jest weryfikowane ( exists zwraca false a notExists zwraca true )
  • Nie można zweryfikować istnienia ani nieistnienia pliku lub katalogu (na przykład z powodu ograniczeń dostępu): zarówno exists i nonExists zwracają 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/plain dla plików tekstowych
  • text/html dla stron HTML
  • application/pdf dla plików PDF
  • image/png dla 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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow