Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

File and Directory #46

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 117 additions & 4 deletions c-.net/basic/yuqori-daraja/file/directoryinfo.md
Original file line number Diff line number Diff line change
Expand Up @@ -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}");
}
```
159 changes: 67 additions & 92 deletions c-.net/basic/yuqori-daraja/file/fileinfo.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. |
Expand All @@ -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}");
}
```