Path: reprezentowanie lokalizacji plików
Twórz obiekty Path, rozwiązuj i relatywizuj ścieżki oraz modyfikuj ich składniki.
Path: reprezentowanie lokalizacji plików to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Wprowadzenie do Path
Interfejs java.nio.file.Path reprezentuje lokalizację pliku lub katalogu w systemie plików. Zastępuje starszą klasę java.io.File bardziej rozbudowanym, niezależnym od platformy API.
import java.nio.file.*;
Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");
System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // trueElementy ścieżki
Wyodrębnij elementy ścieżki:
Path path = Path.of("/home/user/docs/report.txt");
System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent()); // /home/user/docs
System.out.println(path.getRoot()); // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0)); // home
System.out.println(path.getName(3)); // report.txtŚcieżki względne i bezwzględne
Ścieżka może być bezwzględna (zaczyna się od katalogu głównego) lub względna (względem bieżącego katalogu). Użyj isAbsolute(), aby to sprawdzić, oraz toAbsolutePath(), aby rozwinąć ścieżkę względną względem bieżącego katalogu roboczego.
Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");
System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true
Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);resolve: łączenie ścieżek
resolve(other) dołącza inną ścieżkę. Jeśli other jest bezwzględna, całkowicie zastępuje bieżącą ścieżkę.
Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");
System.out.println(file); // /home/user/documents/report.txt
// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/configrelativize: obliczanie ścieżek względnych
relativize(other) oblicza ścieżkę względną od tej ścieżki do other:
Path from = Path.of("/home/user");
Path to = Path.of("/home/user/docs/report.txt");
Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt
// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txtnormalize: usuwanie zbędnych elementów
normalize() usuwa elementy . i .. ze ścieżki:
Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txtstartsWith i endsWith
Sprawdzaj relacje prefiksu i sufiksu między ścieżkami:
Path p = Path.of("/home/user/docs/report.txt");
System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt")); // true
System.out.println(p.endsWith("docs/report.txt")); // trueKonwersja do File i URI
W razie potrzeby konwertuj Path na starszą klasę File lub na URI:
Path path = Path.of("/home/user/report.txt");
java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem
java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txtPath na różnych platformach
Path.of() używa separatora właściwego dla platformy. W systemie Windows ścieżki używają ukośnika wstecznego, a w systemie Unix — ukośnika. API obsługuje to w sposób przejrzysty.
// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);Iterowanie po elementach Path
Użyj pętli for-each lub iterator(), aby iterować po poszczególnych elementach nazw:
Path path = Path.of("/home/user/docs/report.txt");
for (Path element : path) {
System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iterationsubpath: wyodrębnianie fragmentu
subpath(begin, end) zwraca ścieżkę względną dla zakresu elementów nazw:
Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3
System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/userSzybkie sprawdzenie
Dla wyrażenia Path.of("/home/user").resolve("docs/file.txt") jaki jest wynik?
Podsumowanie: API Path
Najważniejsze informacje:
- Path.of() / Paths.get() tworzą instancje Path
- getFileName, getParent, getRoot, getName, getNameCount służą do obsługi elementów
- resolve() dołącza; relativize() oblicza ścieżkę względną; normalize() usuwa ./ ../
- startsWith/endsWith służą do sprawdzania prefiksu i sufiksu
- Niezależność od platformy — separator jest obsługiwany automatycznie
Często zadawane pytania
Czy lekcja „Path: reprezentowanie lokalizacji plików” jest bezpłatna?
Tak — pełny tekst „Path: reprezentowanie lokalizacji plików” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Path: reprezentowanie lokalizacji plików”?
Twórz obiekty Path, rozwiązuj i relatywizuj ścieżki oraz modyfikuj ich składniki. Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Path: reprezentowanie lokalizacji plików”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Path: reprezentowanie lokalizacji plików
- Narzędzie Files: odczyt, zapis, kopiowanie i przenoszenie
- Przechodzenie po drzewach katalogów za pomocą Files.walk
- WatchService: monitorowanie zmian plików