CodeGym /Kurslar /Java SELF AZ /Fayllarla tanışlıq

Fayllarla tanışlıq

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

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 FileFileInputStream 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. PathFile 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 adPath 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
Path fayl = Path.of("c:\\projects\\note.txt");
Fayl yolu
Path qovluq = Path.of("c:\\projects\\");
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
Path getParent()
Ata direktoriya qaytarır
Path getFileName()
Direktoriyasız fayl adını qaytarır
Path getRoot()
Yoldan kök direktoriyasını qaytarır
boolean isAbsolute()
Mövcud yolun mütləq olduğunu yoxlayır
Path toAbsolutePath()
Yolu mütləq bir formaya çevirir
Path normalize()
Direktoriya adındakı şablonları silir.
Path resolve(Path other)
Mütləq və nisbi yoldan yeni mütləq yol yaradır.
Path relativize(Path other)
İki mütləq yoldan nisbi yol əldə edir.
boolean startsWith(Path other)
Mövcud yolun seçilmiş yolla başladığını yoxlayır
boolean endsWith(Path other)
Mövcud yolun seçilmiş yolla bitdiyini yoxlayır
int getNameCount()
Yolu / ayırıcı ilə hissələrə bölür.
Hissələrin sayını qaytarır.
Path getName(int index)
Yolu / ayırıcı ilə hissələrə bölür.
Nömrəsinə görə hissəni qaytarır.
Path subpath(int beginIndex, int endIndex)
Yolu / ayırıcı ilə hissələrə bölür.
Intervala görə yolun hissəsini qaytarır.
File toFile()
Path obyektini köhnə File obyektinə çevirir
URI toUri()
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
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getParent();
"c:\\windows\\projects\\"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getParent();
"c:\\windows\\"
String str = "c:\\";
Path path = Path.of(str).getParent();
null

getFileName() metodu yalnız bir fayl (və ya qovluq) adını qaytarır — sonuncu separatorun ardındakı şey:

Kod Məna
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getFileName();
"note.txt"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getFileName();
"projects"
String str = "c:\\";
Path path = Path.of(str).getFileName();
null

getRoot() metodu kök (root) qovluğa gedən yolu qaytarır:

Kod Məna
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getRoot();
"c:\\"


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
String str = "c:\\windows\\projects\\note.txt";
boolean abs = Path.of(str).isAbsolute();
true
String str = "src\\com\\codegym\\Main.java";
boolean abs = Path.of(str).isAbsolute();
false

Metod Path toAbsolutePath()

Əgər lazımdırsa, yola cari iş direktoriyasını əlavə edərək onu absolyut yola çevirir:

Kod Məna
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).toAbsolutePath();
"c:\\windows\\projects\\note.txt"
String str = "src\\com\\codegym\\Main.java";
Path path = Path.of(str).toAbsolutePath();
"d:\\work\\src\\com\\codegym\\Main.java"

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
String str = "c:\\windows\\..\\projects\\note.txt";
Path path = Path.of(str).normalize();
"c:\\projects\\note.txt"
String str = "src\\com\\codegym\\..\\Main.java";
Path path = Path.of(str).normalize();
"src\\com\\Main.java"

Metod Path relativize(Path other)

Metod relativize() «yolların fərqini» — bir yolu digərinə nisbətən hesablayır

Kod Məna
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\"); Path result = path2.relativize(path1);
"projects\\note.txt"
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\"); Path result = path1.relativize(path2);
"..\\.."
Path path1 = Path.of("c:\\aaa\\bbb\\1.txt");
Path path2 = Path.of("d:\\zzz\\y.jpg"); Path result = path1.relativize(path2);
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
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path1.resolve(path2);
"c:\\windows"
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path2.resolve(path1);
"c:\\windows\\projects\\note.txt"

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
c:\windows\projects\note.txt
file:///c:/windows/projects/note.txt

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION