JavaRush /Kurslar /All lectures for UZ purposes /Java da Fayllar bilan Ishlash

Java da Fayllar bilan Ishlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Files Синфи

Класс Files

Fayllar bilan ishlash uchun, java.nio.file.Files deb atalmish yaxshi bir sinf bor. U hayotning barcha holatlariga mos keluvchi metodlarga ega. Ushbu sinfning barcha metodlari statik va Path turidagi obyektlar bilan ishlaydi. Metodlar juda ko'p, shuning uchun faqat asosiylarini ko'rib chiqamiz:

Метод Таърифи
Path createFile(Path path)
path yo'li bilan yangi fayl yaratadi
Path createDirectory(Path path)
Yangi katalog yaratadi
Path createDirectories(Path path)
Bir nechta kataloglar yaratadi
Path createTempFile(prefix, suffix)
Vaqtinchalik fayl yaratadi
Path createTempDirectory(prefix)
Vaqtinchalik katalog yaratadi
void delete(Path path)
Agar bo'sh bo'lsa, fayl yoki katalogni o'chiradi
Path copy(Path src, Path dest)
Faylni nusxalaydi
Path move(Path src, Path dest)
Faylni ko'chiradi
boolean isDirectory(Path path)
Yo'lning katalog yoki fayl ekanligini tekshiradi
boolean isRegularFile(Path path)
Yo'lning fayl yoki katalog ekanligini tekshiradi
boolean exists(Path path)
Berilgan yo'ldagi obyekt mavjudligini tekshiradi
long size(Path path)
Faylning hajmini qaytaradi
byte[] readAllBytes(Path path)
Faylning barcha mazmunini baytlar massivi ko'rinishida qaytaradi
String readString(Path path)
Faylning barcha mazmunini satr ko'rinishida qaytaradi
List<String> readAllLines(Path path)
Faylning barcha mazmunini satrlar ro'yxati ko'rinishida qaytaradi
Path write(Path path, byte[])
Baitlar massivi faylga yoziladi
Path writeString(Path path, String str)
Satr faylga yoziladi
DirectoryStream<Path> newDirectoryStream(Path dir)
Berilgan katalogdan fayllar (va ichki kataloglar) to'plamini qaytaradi

2. Fayllar va kataloglar yaratish

Fayllar va kataloglarni yaratish juda oson. Misollarda ko'rib chiqamiz:

Код Изоҳ
Files.createFile(Path.of("c:\\readme.txt"));
Fayl yaratadi
Files.createDirectory(Path.of("c:\\test"));
Katalog yaratadi
Files.createDirectories(Path.of("c:\\test\\1\\2\\3"));
Katalog va ehtiyojga qarab ichki kataloglarni yaratadi, agar u mavjud bo'lmasa.

3. Nusxalash, ko'chirish va o'chirish

Fayllarni nusxalash, ko'chirish va o'chirish ham oson. Kataloglarga nisbatan, ular bo'sh bo'lishi kerak.

Код Изоҳ
Path path1 = Path.of("c:\\readme.txt");
Path path2 = Path.of("c:\\readme-copy.txt");
Files.copy(path1, path2);
Faylni nusxalaydi
Path path1 = Path.of("c:\\readme.txt");
Path path2 = Path.of("d:\\readme-new.txt");
Files.move(path1, path2);
Faylni ko'chiradi va nomini o'zgartiradi
Path path = Path.of("d:\\readme-new.txt");
Files.delete(path);
Faylni o'chiradi

4. Fayl turini va mavjudligini tekshirish

Borganingizda tashqaridan olingan bir yo'l bor bo'lsa, bu fayl yoki katalog ekanligini bilishni xohlaysiz. Umuman olganda, bu fayl/katalog mavjudmi yoxud yo'qmi?

Buning uchun maxsus metodlar bor. Shuningdek, fayl uzunligini ham osonlik bilan tekshirish mumkin:

Код Изоҳ
Files.isRegularFile(Path.of("c:\\readme.txt"));
true
Files.isDirectory(Path.of("c:\\test"));
true
 Files.exists(Path.of("c:\\test\\1\\2\\3"));
false
Files.size(Path.of("c:\\readme.txt"));
10112

5. Faylning mazmuni bilan ishlash

Va nihoyat, faylning mazmunini oson o'qish yoki yozish uchun bir qator metodlar mavjud. Misol:

Код Таърифи
Path path = Path.of("c:\\readme.txt");
List<String> list = Files.readAllLines(path);

for (String str : list)
   System.out.println(str);

Faylning mazmunini satrlar ro'yxati ko'rinishida o'qiymiz.

Satrlarni ekranga chiqaryapmiz


6. Katalog mazmunini olish

Hozir eng qiziqarli metodni ko'rib chiqamiz — berilgan katalogdagi fayllar va ichki kataloglarni olish.

Buning uchun maxsus metod mavjud — newDirectoryStream(), bu maxsus turdagi obyektni DirectoryStream<Path> qaytaradi. Unda iterator bor (!), va ushbu iterator yordamida berilgan katalogdagi barcha fayllar va ichki kataloglarni olish mumkin.

Bu osonroq ko'rinadi:

Код Таърифи
Path path = Path.of("c:\\windows");

try (DirectoryStream<Path> files = Files.newDirectoryStream(path)) {
   for (Path path : files)
      System.out.println(path);
}


Fayllar ro'yxati bilan obyektni olamiz
Fayllar ro'yxati bo'yicha sikl

Obyekt DirectoryStream<Path> ikki xususiyatga ega. Birinchidan, unda fayllar yo'llarini qaytaruvchi iterator bor va biz ushbu obyektni for-each siklida ishlatishimiz mumkin.

Ikkinchidan, ushbu obyekt ma'lumotlar oqimi hisoblanadi va uni close() metodi yordamida yopish yoki try-with-resources ichida ishlatish kerak.



7. Files.newInputStream Методи

Java 5 dan boshlab FileInputStream va FileOutputStream sinflari eskirgan deb hisoblana boshlandi. Ushbu sinflar obyektlar yaratilganda diskda darhol fayl yaratishi ularga salbiy ta'sir ko'rsatgan edi. Va barcha fayl yaratish bilan bog'liq xatolar chiqarilishi mumkin edi.

Kelib chiqqan natijada, bu unchalik yaxshi qaror emas deb topildi. Shuning uchun fayl obyektlarini yaratish uchun utilitar sinf metodlardan foydalanish tavsiya etiladi – java.nio.Files.

Eski fayl yaratish yondashuvi va yangisini taqqoslanishi:

Эски
String src = "c:\\projects\\log.txt";
InputStream input = new FileInputStream( src );
Янги
String src = "c:\\projects\\log.txt";
InputStream input = Files.newInputStream( Path.of( src ) );

Aynan shunday o'zgarish FileOutputStream uchun ham mavjud:

Эски
String src = "c:\\projects\\log.txt";
OutputStream  output = new FileOutputStream( src );
Янги
String src = "c:\\projects\\log.txt";
OutputStream  output = Files.newOutputStream( Path.of( src ) );

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