JavaRush /Kurslar /All lectures for UZ purposes /Fayllar Bilan Tanishtirish

Fayllar Bilan Tanishtirish

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Path klasi

Agar siz diskdagi fayllar bilan nimadir qiladigan dastur yozmoqchi bo'lsangiz, bu sizda juda oson bo'ladi. Java da juda ko'p klasslar bor, ular sizga fayllar va ularning mazmuni bilan ishlashda yordam beradi.

Ilk Java versiyalarida fayllar bilan ish qilish uchun File va FileInputStream kabi klasslar ishlatilgan. Ammo hozir File klassi eskirgan hisoblanadi va uni ishlatish tavsiya etilmaydi. Siz hali ham uni kodda, metod parametrlari yoki klass konstruktlarida uchratishingiz mumkin.

Biz fayllar bilan ishlashni to'g'ridan-to'g'ri Path klassidan boshlaymiz. Path — bu File o'rniga kelgan klass. U bilan ishlash xavfsizroq va samaraliroq.

Path klasi

Texnik jihatdan Path — bu klass emas, interfeys. Bu har bir operatsion (va fayl) tizim uchun o'z Path merosxo'r klassini yozish imkonini yaratish uchun shunday qilingan.

Windowsda fayl yo‘llarini yozishning o‘z standartlari bor, Linuxda esa o‘ziga xos. Dunyo bo'ylab yana ko'plab operatsion tizimlar bor, va har birida - o'z standartlari.

Shu sababli, fayllar bilan ishlash uchun metodlarda Path interfeysi ko'rsatilgan, lekin haqiqiy ish uning merosxo'r klasslari bilan amalga oshiriladi: WindowsPath, UnixPath, ...

Path obyektini yaratish

Path obyektini yaratish uchun (aslida bu WindowsPath merosxo'r klassi obyekti bo'ladi), quyidagi ko'rinishdagi buyruqdan foydalanish kerak:

Path nom = Path.of(yo'l);

Bu yerda nom — bu Path tipidagi o'zgaruvchi nomi. yo'l — bu fayl (yoki katalog) nomi bilan birga yo'l. of esa Path klassining statik metodi.

of() metodi Windowsda ishlayotgan dasturda WindowsPath obyekti yaratish uchun ishlatiladi, Linuxda esa UnixPath obyekti. Siz Path tipidagi obyekt yaratishingiz mumkin emas, masalan, new Path() ko'di orqali.

Misollar:

Kod Izoh
Path file = Path.of("c:\\projects\\note.txt");
Faylga yo'l
Path directory = Path.of("c:\\projects\\");
Katalogga yo'l

Fayl (yoki katalog) mavjud bo'lishi shart emas, shunchaki Path tipidagi obyekt mavjud bo'lishi mumkin. Balki siz faqat fayl yaratmoqchisiz... Path tipidagi obyekt — bu String tipining ilg'or versiyasi kabi — u diskdagi aniq bir faylga bog'liq emas: u faqat diskdagi yo'lni saqlaydi va hammasi.


2. Path tipidagi metodlar

Path interfeysida juda ko'p qiziqarli metodlar mavjud. Eng qiziqarli metodlar quyidagi jadvalda keltirilgan.

Metod Tavsif
Path getParent()
Bu metod ota katalogni qaytaradi
Path getFileName()
Katalogsiz fayl nomini qaytaradi
Path getRoot()
Yo'ldan ildiz katalogini qaytaradi
boolean isAbsolute()
Joriy yo‘lning mutlaq ekanligini tekshiradi
Path toAbsolutePath()
Yo‘lni mutlaq qabul qiladi
Path normalize()
Katalog nomidagi naqshlarni olib tashlaydi.
Path resolve(Path other)
Mutlaq va nisbiy yo‘ldan yangi mutlaq yo‘lni hosil qiladi.
Path relativize(Path other)
Ikki mutlaq yo‘ldan nisbiy yo‘lni oladi.
boolean startsWith(Path other)
Joriy yo‘l boshlanayotganligini tekshiradi
boolean endsWith(Path other)
Joriy yo‘l tugayotganini tekshiradi
int getNameCount()
Yo‘lni / ajratgich bilan qismlarga ajratadi.
Qismlar sonini qaytaradi.
Path getName(int index)
Yo‘lni / ajratgich bilan qismlarga ajratadi.
Uning raqamiga qarab qismni qaytaradi.
Path subpath(int beginIndex, int endIndex)
Yo‘lni / ajratgich bilan qismlarga ajratadi.
Berilgan intervall bo'yicha yo‘lning qismini qaytaradi.
File toFile()
Obyektni o‘zgartiradi Path eski File obyektiga
URI toUri()
Obyektni Path ni obyekti URI turiga o‘zgartiradi

Quyida mavjud metodlar bo‘yicha qisqacha izohlar berilgan.


3. Yo'lni qismlarga bo'linish

Metod getParent() joriy yo‘l uchun ota katalogni ko‘rsatadi. Yo‘l katalog yoki fayl ekanligidan qat'i nazar:

Kod Qiymat
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

Metod getFileName() bir fayl nomini (yoki katalog nomini) qaytaradi — oxirgi ajratgichdan keyin keladi:

Kod Qiymat
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

Metod getRoot() ildiz katalogga yo‘lni qaytaradi:

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


4. Mutlaq va nisbiy yo‘llar

Yo‘llar ikki turga bo‘linadi: mutlaq va nisbiy. Mutlaq yo‘l ildiz katalogdan boshlanadi. Windows uchun bu c:\ papkasi bo‘lishi mumkin, Linux uchun esa / katalogi

Nisbiy yo‘l qandaydir katalogga nisbatan hisoblanadi. Ya'ni, bu yo'lning oxiri, lekin faqat boshlanishi bo'lmasdan. Nisbiy yo'lni mutlaq yo'lga va aksincha o'zgartirish mumkin

Metod boolean isAbsolute()

Metod joriy yo‘lning mutlaq ekanligini tekshiradi

Kod Qiymat
String str = "c:\\windows\\projects\\note.txt";
boolean abs = Path.of(str).isAbsolute();
true
String str = "src\\com\\javarush\\Main.java";
boolean abs = Path.of(str).isAbsolute();
false

Metod Path toAbsolutePath()

Agar kerak bo‘lsa, yo‘lni mutlaqga aylantiradi — unga joriy ishchi katalogni qo‘shadi:

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

Metod Path normalize()

Yo‘lning nomi o‘rniga “..” ni yozish mumkin, bu bir katalog orqaga qaytishni anglatadi. Normallashgan yo‘llar bunday narsalarni buzadi. Misollar:

Kod Qiymat
String str = "c:\\windows\\..\\projects\\note.txt";
Path path = Path.of(str).normalize();
"c:\\projects\\note.txt"
String str = "src\\com\\javarush\\..\\Main.java";
Path path = Path.of(str).normalize();
"src\\com\\Main.java"

Metod Path relativize(Path other)

Metod relativize() “yo‘llar farqini” hisoblash imkonini beradi: boshqa yo‘lga nisbatan bir yo‘l

Kod Qiymat
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);
Exception IllegalArgumentException:
ikkita yo‘llar turli “ildiz”larga ega (turli disklar)

Metod Path resolve(Path other)

Metod resolve() aksincha relativize() amalni bajaradi: mutlaq va nisbiy yo‘llardan yangi mutlaq yo‘lni hosil qiladi.

Kod Qiymat
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()

Bu metod eski File obyektini qaytaradi, u Path obyektida saqlanayotgan bir xil fayl yo‘lini o‘z ichiga oladi.

Metod toURI()

Metod yo‘lni URI standarti bo‘yicha o'zgartiradi, obyektni qaytaradi, u fayl yo'lini o'z ichiga oladi:

Fayl yo'li Fayl URI
c:\windows\projects\note.txt
file:///c:/windows/projects/note.txt

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION