1. Path Sinfi
Əgər diskdəki fayllarla nəsə etmək istəyən proqram yazmaq istəyirsinizsə, bunu çox asanlıqla edə bilərsiniz. Java-da həm fayllarla, həm də onların məzmunu ilə işləməyinizə kömək edən bir çox siniflər var.
Java-nın əvvəlki versiyalarında fayllarla işləmək üçün File və FileInputStream kimi siniflər istifadə edilirdi. Amma indi File sinfi köhnəlmiş hesab olunur və onu istifadə etmək tövsiyə edilmir. Təbii ki, siz hələ də onu kodda, metodların parametrlərində və ya sinif konstruktorlarında görə bilərsiniz.
Biz fayllarla işləməyi dərhal Path sinfindən öyrənməyə başlayacağıq. Path — File sinifinin yerinə gəlmiş bir sinifdir. Onunla işləmək daha təhlükəsiz və təsirli olur.
Path Sinfi
Texniki olaraq Path sinif deyil, interfeysdir. Bu, hər bir əməliyyat (və ya fayl) sistemi üçün öz Path sinifinin bir nəsilini yazmaq üçün nəzərdə tutulub.
Windows-da fayl yollarının öz standartları, Linux-da isə tamam fərqli standartlar var. Və dünyada başqa çoxlu əməliyyat sistemləri də var, hər birinin öz standartları var.
Buna görə də, fayllarla işləmək üçün metodlarda hər yerdə Path interfeysi göstərilib, amma real iş onun nəsil sinifləri ilə aparılır: WindowsPath, UnixPath, ...
Path obyekti yaratmaq
Path obyektini yaratmaq üçün (əslində bu WindowsPath sinifinin obyekti olacaq), bu tipli komandadan istifadə etmək lazımdır:
Path ad = Path.of(yol);
Burada ad — Path tipli dəyişənin adı, yol — fayla (və ya qovluğa) gedən yol və faylın (və ya qovluğun) adı ilə birlikdə. of isə Path sinfinin statik metodudur.
of() metodu Windows-da işlədikdə WindowsPath obyektlərini, Linux-da işlədikdə isə UnixPath obyektlərini yaratmaq üçün istifadə olunur. Path tipli obyekt yarada bilməzsiniz, məsələn: new Path().
Nümunələr:
| Kod | Qeyd |
|---|---|
|
Fayl yolu |
|
Qovluq yolu |
Fayl (və ya qovluq) mövcud olmaya bilər, amma yenə də Path tipli obyekt mövcud ola bilər. Ola bilsin ki, siz hələ faylı yaratmaq istəyirsiniz... Path tipli obyekt — diskdəki konkret faylla bağlı olmayan, diskdə bir yol saxlayan sadə bir növüdür: o, sadəcə bir yol saxlayır, vəssalam.
2. Path tipli metodlar
Path interfeysinin olduqca çox maraqlı metodları var. Ən maraqlı olanlar aşağıdakı cədvəldə təqdim olunub.
| Metod | Təsvir |
|---|---|
|
Ata direktoriya qaytarır |
|
Direktoriyasız fayl adını qaytarır |
|
Yoldan kök direktoriyasını qaytarır |
|
Mövcud yolun mütləq olduğunu yoxlayır |
|
Yolu mütləq bir formaya çevirir |
|
Direktoriya adındakı şablonları silir. |
|
Mütləq və nisbi yoldan yeni mütləq yol yaradır. |
|
İki mütləq yoldan nisbi yol əldə edir. |
|
Mövcud yolun seçilmiş yolla başladığını yoxlayır |
|
Mövcud yolun seçilmiş yolla bitdiyini yoxlayır |
|
Yolu / ayırıcı ilə hissələrə bölür.Hissələrin sayını qaytarır. |
|
Yolu / ayırıcı ilə hissələrə bölür.Nömrəsinə görə hissəni qaytarır. |
|
Yolu / ayırıcı ilə hissələrə bölür.Intervala görə yolun hissəsini qaytarır. |
|
Path obyektini köhnə File obyektinə çevirir |
|
Path obyektini URI tipli obyektə çevirir |
Aşağıda mövcud metodların qısa təsviri verilib.
3. Yolun hissələrə bölünməsi
getParent() metodu cari yol üçün valideyn qovluğa işarə edən yolu qaytarır. Yolun qovluq və ya fayl olmasından asılı olmayaraq:
| Kod | Məna |
|---|---|
|
|
|
|
|
|
getFileName() metodu yalnız bir fayl (və ya qovluq) adını qaytarır — sonuncu separatorun ardındakı şey:
| Kod | Məna |
|---|---|
|
|
|
|
|
|
getRoot() metodu kök (root) qovluğa gedən yolu qaytarır:
| Kod | Məna |
|---|---|
|
|
4. Absolyut və nisbi yollar
Yollar iki tipə bölünür: absolyut və nisbi. Absolyut yol kök direktoriyasından başlayır. Windows üçün bu, c:\ qovluğu, Linux üçün isə / direktoriyası ola bilər.
Nisbi yol hansısa direktoriyaya nisbətən hesablanır. Yəni yolun sonu kimi bir şeydir, amma sadəcə əvvəlkisiz. Nisbi yolu absolyut olaraq dəyişmək mümkündür və əksinə
Metod boolean isAbsolute()
Metod cari yolun absolyut olub-olmadığını yoxlayır
| Kod | Məna |
|---|---|
|
|
|
|
Metod Path toAbsolutePath()
Əgər lazımdırsa, yola cari iş direktoriyasını əlavə edərək onu absolyut yola çevirir:
| Kod | Məna |
|---|---|
|
|
|
|
Metod Path normalize()
Yolda direktoriyanın adı yerinə «..» yazmaq olar və bu bir direktoriyaya geri qayitmaq mənasına gəlir. Normalizasiya bu halları aradan qaldırır. Nümunələr:
| Kod | Məna |
|---|---|
|
|
|
|
Metod Path relativize(Path other)
Metod relativize() «yolların fərqini» — bir yolu digərinə nisbətən hesablayır
| Kod | Məna |
|---|---|
|
|
|
|
|
IllegalArgumentException xətası: iki yol fərqli 'kökə' (fərqli disklərə) malikdir |
Metod Path resolve(Path other)
Metod resolve() relativize()-in əksini yerinə yetirir: absolyut və nisbi yoldan yeni absolyut yol qurur.
| Kod | Məna |
|---|---|
|
|
|
|
Metod toFile()
Metod köhnəlmiş File obyektini qaytarır, bu obyekt Path obyektindən olan eyni fayl yolunu saxlayır.
Metod toURI()
Metod yolu URI standardına çevirir, fayl yolunu saxlayan obyekt qaytarır:
| Fayl yolu | Faylın URI-si |
|---|---|
|
|
GO TO FULL VERSION