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