diff --git a/c-.net/basic/yuqori-daraja/file/directoryinfo.md b/c-.net/basic/yuqori-daraja/file/directoryinfo.md index 7aab032b..1d7af192 100644 --- a/c-.net/basic/yuqori-daraja/file/directoryinfo.md +++ b/c-.net/basic/yuqori-daraja/file/directoryinfo.md @@ -2,11 +2,124 @@ description: Nodirbek Abdulaxadov --- -# DirectoryInfo +## DirectoryInfo -C\# dasturlash tilida kataloglar bilan ishlash uchun System.IO nomlar fazosida aniqlangan 2 ta sinf mavjud: **Directory** va **DirectoryInfo** +[**DirectoryInfo sinfi**](https://learn.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=net-7.0) - papkalarni yaratish, ko'chirish va o'chirish uchun property va metodlarni taqdim etadi. DirectoryInfo sinfidan voris olish imkonsiz. -**Directory** sinfi - kataloglarni yaratish, nusxalash, ko'chirish yoki o'chirish kabi ishlar uchun bir qator statik metodlarni taqdim etadi. -**DirectoryInfo** sinfi - kataloglarni yaratish, nusxalash, ko'chirish yoki o'chirish kabi odatiy ishlar uchun ishlatiladi. Ko'p jihatdan u Katalogga o'xshaydi. DirectoryInfo sinfida statik metodlar mavjud emas va ularni faqat moslashtirilgan obyektlarda ishlatish mumkin. Ushbu sinf meros qilib olinishi mumkin emas. +**[DirectoryInfo propertylari](https://learn.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=net-7.0#properties):** + +| Property nomi | Xususiyati | +| :--- | :--- | +| FullName | Papka joylashgan to’liq katalog nomini qaytaradi | +| Exists | Papka mavjudligini tekshiradi | +| CreationTime | Papka yaratilgan vaqtini qaytaradi | +| LastAccessTime | Papka ishlatilgan oxirgi vaqtni qaytaradi | +| LastWriteTime | Papkaning oxirgi o’zgartirilgan vaqtini qaytaradi | +| Name | Papka nomini qayatardi | +| Parent | Papka joylashgan papkani (katalog usti katalogni) qaytaradi | +| Root | Papka joylashgan root papkani (eng ustki katalogni) qaytaradi | + + +**[DirectoryInfo metodlari](https://learn.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=net-7.0#methods):** + +| Metod nomi | Funksionalligi | +| :--- | :--- | +| Create | Papka yaratadi | +| CreateSubdirectory | Papka ichiga papka(subdirectory) yaratadi. | +| GetDirectories | Papka ichidagi mavjud papkalarni qaytaradi | +| GetFiles | Papka ichidagi mavjud fayllarni qaytaradi | +| Delete | Belgilangan papkani o'chiradi. | +| MoveTo | Belgilangan papkani yangi joyga ko'chiradi va yangi papka nomini ko'rsatish imkoniyatini beradi. | +| Refresh | Papka holatini yangilaydi. | + +_DirectoryInfo xususiyatlardan foydalanish:_ + +```csharp +string path = "C:\\Users\\Nodirbek"; +var directoryInfo = new DirectoryInfo(path); + +// papka mavjudligini tekshirish +if (directoryInfo.Exists) +{ + Console.WriteLine("Papka ichidagi mavjud papkalar:"); + foreach (var directory in directoryInfo.GetDirectories()) + { + //papka nomi va yaratilgan vaqti + Console.WriteLine(directory.Name.PadRight(30) + "\t" + directory.CreationTime); + } + Console.WriteLine(); + + Console.WriteLine("Papka ichidagi mavjud fayllar:"); + foreach (var file in directoryInfo.GetFiles()) + { + //fayl nomi + Console.WriteLine(file.Name); + } +} +else +{ + Console.WriteLine("Bunday papka mavjud emas!"); +} +``` + +_DirectoryInfo metodlaridan foydalanish:_ + +```csharp +string path = "C:\\Users\\Nodirbek\\Desktop\\ExampleFolder"; +string path2 = "C:\\Users\\Nodirbek\\Desktop\\ExampleFolder_Copy"; +var directoryInfo = new DirectoryInfo(path); + +try +{ + //papkani yaratish | agar mavjud bo'lsa xatolik sodir bo'ladi + directoryInfo.Create(); + + // faylni pathdan path2 ga ko'chirish + directoryInfo.MoveTo(path2); + Console.WriteLine($"{path} papka {path2} ga ko'chirildi."); + + // papkani o'chirish | papkani bo'sh ekanligiga ishonch hosil qiling + directoryInfo.Delete(); + Console.WriteLine($"{path} papka o'chirildi"); +} +catch (Exception e) +{ + Console.WriteLine($"Xatolik sodir bo'ldi: {e.Message}"); +} +``` + +**Izohlar:** + +Fayllarni yaratish, ko'chirish, tarkibidagi papka va fayllarni ko'rish kabi bir nechta amallarni bajarish uchun DirectoryInfo sinfidan foydalanamiz. Agar papka ustida birgina amalni bajarmoqchi yoki bitta xususiyatini olmoqchi bo'lsangiz **Directory** static sinfining tegishli metodlaridan foydalanishingiz mumkin. + +## Directory + +[**Directory**](https://learn.microsoft.com/en-us/dotnet/api/system.io.directory?view=net-7.0) sinfi - DirectoryInfo metodlari bilan bir xil funksionallikka ega metodlardan statik holatda foydalanishni ta'minlaydigan sinfdir. +Directory sinfi metodlari haqida batafsil ma'lumotni [bu yerdan](https://learn.microsoft.com/en-us/dotnet/api/system.io.directory?view=net-7.0#methods) olishingiz mumkin. + +Yuqoridagi kod qismini Directory sinfi yordamida alternativini yozishimishiz mumkin: + +```csharp +string path = "C:\\Users\\Nodirbek\\Desktop\\ExampleFolder"; +string path2 = "C:\\Users\\Nodirbek\\Desktop\\ExampleFolder_Copy"; + +try +{ + //papkani yaratish | agar mavjud bo'lsa xatolik sodir bo'ladi + Directory.CreateDirectory(path); + + // faylni pathdan path2 ga ko'chirish + Directory.Move(path, path2); + Console.WriteLine($"{path} papka {path2} ga ko'chirildi."); + + // papkani o'chirish | papkani bo'sh ekanligiga ishonch hosil qiling + Directory.Delete(path); + Console.WriteLine($"{path} papka o'chirildi"); +} +catch (Exception e) +{ + Console.WriteLine($"Xatolik sodir bo'ldi: {e.Message}"); +} +``` diff --git a/c-.net/basic/yuqori-daraja/file/fileinfo.md b/c-.net/basic/yuqori-daraja/file/fileinfo.md index 9eb8d625..ce243631 100644 --- a/c-.net/basic/yuqori-daraja/file/fileinfo.md +++ b/c-.net/basic/yuqori-daraja/file/fileinfo.md @@ -2,29 +2,34 @@ description: Nodirbek Abdulaxadov --- -# FileInfo +## FileInfo -FileInfo sinfi - fayllarni yaratish, nusxalash, o'chirish, ko'chirish va ochish uchun xususiyatlar va metodlarni taqdim etadi. Shuningdek, [FileStream](https://docs.microsoft.com/en-us/dotnet/api/system.io.filestream?view=net-5.0) obyektlarini yaratishda yordam beradi. +[FileInfo](https://learn.microsoft.com/en-us/dotnet/api/system.io.fileinfo?view=net-7.0) sinfi - fayllarni yaratish, nusxalash, o'chirish, ko'chirish va ochish uchun property va metodlarni taqdim etadi. Shuningdek, [FileStream](https://docs.microsoft.com/en-us/dotnet/api/system.io.filestream?view=net-5.0) obyektlarini yaratishda yordam beradi. -**FileInfo xususiyatlari:** -| Directory | Fayl joylashgan katalog nomini qaytaradi | +[**FileInfo propertylari:**](https://learn.microsoft.com/en-us/dotnet/api/system.io.fileinfo?view=net-7.0#properties) + + +| Property nomi | Xususiyati | | :--- | :--- | +| Directory | Fayl joylashgan katalog nomini qaytaradi | | DirectoryName | Fayl joylashgan to’liq katalog nomini qaytaradi | | Exists | Fayl mavjudligini tekshiradi | | Extension | Fayl turini\(kengaytmasini\) qaytaradi | | FullName | Faylning to’liq manzilini qaytaradi | -| IsReadOnly | Fayl faqat o’qish uchunligini tekshiradi | +| IsReadOnly | Fayl faqat o’qish uchun ekanligini tekshiradi | | CreationTime | Fayl yaratilgan vaqtini qaytaradi | | LastAccessTime | Fayl ishlatilgan oxirgi vaqtni qaytaradi | | LastWriteTime | Faylning oxirgi o’zgartirilgan vaqtini qaytaradi | | Length | Fayl hajmini qaytaradi \(baytlarda\) | | Name | Fayl nomini qayatardi | -**FileInfo metodlari:** -| AppendText | FileInfo ushbu nusxasi tomonidan taqdim etilgan faylga matn qo'shadigan StreamWriter yaratadi. | +[**FileInfo metodlari:**](https://learn.microsoft.com/en-us/dotnet/api/system.io.fileinfo?view=net-7.0#methods) + +| Metod nomi | Funksionalligi | | :--- | :--- | +| AppendText | FileInfo ushbu nusxasi tomonidan taqdim etilgan faylga matn qo'shadigan StreamWriter yaratadi. | | CopyTo | Mavjud faylning ustiga yozishni taqiqlab, mavjud faylni yangi faylga ko'chiradi. | | Create | Fayl yaratadi | | CreateText | Yangi matnli faylni yozadigan StreamWriter-ni yaratadi. | @@ -38,105 +43,75 @@ FileInfo sinfi - fayllarni yaratish, nusxalash, o'chirish, ko'chirish va ochish _FileInfo xususiyatlardan foydalanish:_ ```csharp -using System; -using System.IO; +//faylga joylashgan path +string path = @"C:\Users\user\Desktop\test.txt"; + +//FileInfo sinfidan yangi obyekt hosil qilish +FileInfo fileInfo = new FileInfo(path); -namespace FileInfo_examples +//Exist yordamida fayl mavjudligini tekshirish +if (fileInfo.Exists) { - class Program - { - static void Main(string[] args) - { - //faylga yo'l - string path = @"C:\Users\user\Desktop\test.txt"; - - //FileInfo sinfidan yangi obyekt hosil qilish - FileInfo fileInfo = new FileInfo(path); - - //Exist yordamida fayl mavjudligini tekshirish - if (fileInfo.Exists) - { - //fayl xususiyatlarini chiqarish - Console.WriteLine($"Fayl joylashgan katalog: \t{fileInfo.Directory}"); - Console.WriteLine($"Fayl kengaytmasi: \t{fileInfo.Extension}"); - Console.WriteLine($"Faylning to'liq nomi: \t{fileInfo.FullName}"); - Console.WriteLine($"Yaratilgan vaqti: \t{fileInfo.CreationTime}"); - Console.WriteLine($"Hajmi: \t{fileInfo.Length} bayt"); - } - - Console.ReadKey(); - } - } + //fayl xususiyatlarini chiqarish + Console.WriteLine($"Fayl joylashgan katalog: \t{fileInfo.Directory}"); + Console.WriteLine($"Fayl kengaytmasi: \t{fileInfo.Extension}"); + Console.WriteLine($"Faylning to'liq nomi: \t{fileInfo.FullName}"); + Console.WriteLine($"Yaratilgan vaqti: \t{fileInfo.CreationTime}"); + Console.WriteLine($"Hajmi: \t{fileInfo.Length} bayt"); } ``` -![](../../../../.gitbook/assets/image%20%2824%29.png) - _FileInfo metodlaridan foydalanish:_ ```csharp -using System; -using System.IO; -namespace FileInfo_Examples +string path = "Example.txt"; +var fileInfo = new FileInfo(path); + +try +{ + string path2 = "Example_copy.txt"; + + // faylni pathdan path2 ga nusxalash + fileInfo.CopyTo(path2); + Console.WriteLine($"{path} fayl {path2} ga nusxalandi."); + + // faylni o'chiradi + fileInfo.Delete(); + Console.WriteLine($"{path} fayl o'chirildi"); +} +catch (Exception e) { - class Test - { - public static void Main() - { - string path = Path.GetTempFileName(); - var fi1 = new FileInfo(path); - - // Create a file to write to. - using (StreamWriter sw = fi1.CreateText()) - { - sw.WriteLine("Hello"); - sw.WriteLine("And"); - sw.WriteLine("Welcome"); - } - - // Open the file to read from. - using (StreamReader sr = fi1.OpenText()) - { - var s = ""; - while ((s = sr.ReadLine()) != null) - { - Console.WriteLine(s); - } - } - - try - { - string path2 = Path.GetTempFileName(); - var fi2 = new FileInfo(path2); - - // Ensure that the target does not exist. - fi2.Delete(); - - // Copy the file. - fi1.CopyTo(path2); - Console.WriteLine($"{path} was copied to {path2}."); - - // Delete the newly created file. - fi2.Delete(); - Console.WriteLine($"{path2} was successfully deleted."); - } - catch (Exception e) - { - Console.WriteLine($"The process failed: {e.ToString()}"); - } - Console.ReadKey(); - } - } + Console.WriteLine($"Xatolik sodir bo'ldi: {e.Message}"); } ``` -![](../../../../.gitbook/assets/image%20%2883%29.png) +**Izoh:** -**Izohlar:** +Fayllarni ochish, yaratish, ko'chirish, nomini o'zgartirish va o'chirish kabi odatiy operatsiyalar uchun FileInfo sinfidan foydalanamiz. C# dasturlash tilida fayllar bilan ishlashni yanada osonlashtira oladigan **File** sinfi ham mavjud. Agar siz fayl ustida bir-nechta amallarni bajarmoqchi bo'lsangiz FileInfo sinfidan foydalanganingiz ma'qul. -Fayllarni ko'chirish, nomini o'zgartirish, yaratish, ochish, o'chirish va qo'shib qo'yish kabi odatiy operatsiyalar uchun FileInfo sinfidan foydalaning. +## File -Agar bitta faylda bir nechta operatsiyalarni bajarayotgan bo'lsangiz , [File](https://docs.microsoft.com/en-us/dotnet/api/system.io.file?view=net-5.0) sinfining tegishli statik metodlari o'rniga [FileInfo](https://docs.microsoft.com/en-us/dotnet/api/system.io.fileinfo?view=net-5.0) instansiya metodlaridan foydalanish samaraliroq bo'lishi mumkin , chunki xavfsizlikni tekshirish har doim ham talab qilinmaydi. +[**File**](https://learn.microsoft.com/en-us/dotnet/api/system.io.file.opentext?view=net-7.0) sinfi - FileInfo metodlari bilan bir xil funksionallikka ega metodlardan statik holatda foydalanishni ta'minlaydigan sinfdir. +File sinfi metodlari haqida batafsil ma'lumotni [bu yerdan](https://learn.microsoft.com/en-us/dotnet/api/system.io.file?view=net-7.0#methods) olishingiz mumkin. -**Code source**👉[FileInfo xususiyatlari va metodlari qo’llanishiga doir misollar](https://github.com/Nodirbek-Abdulaxadov/FileInfo-examples) +Yuqoridagi kod qismini File sinfi yordamida alternativini yozishimishiz mumkin: + +```csharp +string path = "Example.txt"; +try +{ + string path2 = "Example_copy.txt"; + // faylni pathdan path2 ga nusxalash + File.Copy(path, path2); + Console.WriteLine($"{path} fayl {path2} ga nusxalandi."); + + //faylni o'chiradi + File.Delete(path); + Console.WriteLine($"{path} fayl o'chirildi"); +} +catch (Exception e) +{ + Console.WriteLine($"Xatolik sodir bo'ldi: {e.Message}"); +} +```