C# Dosya İşlemleri Adım Adım Detaylı Anlatım
C# dilinde dosya okuma, yazma ve hata yönetimi gibi temel dosya işlemlerini adım adım ve detaylı şekilde anlatan kapsamlı rehber.
common.author: Fatma Nur Karaca31 common.views
chat.question 1
chat.user
bana c# text file konusunu anlat
AI Asistan
Elbette, C# dilinde "text file" yani metin dosyası konusu oldukça temel ve önemli bir konudur. Sana bu konuda genel bir bakış sunayım.
### C#'da Text File (Metin Dosyası) İşlemleri
C# dilinde metin dosyalarıyla çalışmak oldukça yaygın ve kullanışlıdır. Bu işlemler genellikle **okuma**, **yazma**, ve **düzenleme** şeklinde üç ana başlık altında toplanabilir.
---
### 1. Dosya Okuma (Read)
Metin dosyasını okumak için birkaç farklı yöntem vardır:
- **StreamReader** kullanımıyla satır satır veya tüm dosyayı okuyabilirsin.
```csharp
using (StreamReader sr = new StreamReader("dosya.txt"))
{
string satir;
while ((satir = sr.ReadLine()) != null)
{
Console.WriteLine(satir);
}
}
```
- **File.ReadAllText()** veya **File.ReadAllLines()** fonksiyonlarıyla dosyanın tamamını veya satır satır okuyabilirsin.
```csharp
string tümMetin = File.ReadAllText("dosya.txt");
string[] satırlar = File.ReadAllLines("dosya.txt");
```
---
### 2. Dosyaya Yazma (Write)
Metin dosyasına veri eklemek veya yeni içerik yazmak için:
- **StreamWriter** kullanabilirsin:
```csharp
using (StreamWriter sw = new StreamWriter("dosya.txt"))
{
sw.WriteLine("Merhaba Dünya!");
}
```
- **File.WriteAllText()** veya **File.AppendAllText()** fonksiyonlarıyla da kolayca yazabilirsin:
```csharp
File.WriteAllText("dosya.txt", "Yeni içerik");
File.AppendAllText("dosya.txt", "Ekstra içerik");
```
---
### 3. Dosyayı Silmek veya Kopyalamak
- Silmek için:
```csharp
File.Delete("dosya.txt");
```
- Kopyalamak için:
```csharp
File.Copy("kaynak.txt", "hedef.txt");
```
---
### 4. Dosya İşlemlerinde Dikkat Edilmesi Gerekenler
- Dosya erişiminde **try-catch** blokları kullanarak hataları yakalamak iyi olur.
- Dosya kapatmayı unutma; bu yüzden `using` blokları kullanmak en sağlıklısıdır, böylece otomatik kapanır.
- Dosya yolunu doğru belirlemek önemli, özellikle dizin yönetimine dikkat etmelisin.
---
### Sonuç olarak:
C# dilinde dosya işlemleri oldukça esnektir ve çoğu zaman dosya okuma, yazma ve düzenleme işlemlerini yapman gereken durumlar olur. Bu temel işlemler sayesinde uygulamalarında veri saklama ve okuma işlemlerini kolayca gerçekleştirebilirsin.
İstersen, belirli bir konu üzerinde detaylı örnekler veya açıklamalar da yapabilirim. Yardımcı olabileceğim başka bir konu var mı?
chat.question 2
chat.user
ban bu föyü adım adım açık açık anlat ayrıntılı bir şekilde anlat
AI Asistan
Elbette, sana adım adım ve detaylı bir şekilde bu ödevlerin içeriğini anlatacağım. Bu ödevler, C# dilinde dosya işlemleriyle ilgili temel ve orta seviyede çeşitli görevler içeriyor. Hadi birlikte her birini sırayla inceleyelim.
---
## **Genel Bakış**
Bu ödevler, aşağıdaki temel dosya işlemlerini kapsıyor:
- Dosya okuma ve kapama
- Hata yönetimi (try-catch ile)
- Dosya içeriklerini değiştirme ve yeni dosyalara yazma
- Dosya isimleri ve uzantılarıyla ilgili doğrulama
- Dosya içeriğini okuma ve yazma fonksiyonları
---
## **Ödev 1: Belirli bir dosyayı StreamReader ile okuma ve kapama**
- **Amaç:**
Bir metin dosyasını (`Test.txt`) `StreamReader` kullanarak satır satır okuyacaksın.
Ancak, burada `using` kullanılmayacak. Bu yüzden, dosyayı manuel olarak kapatman gerek.
- **Adımlar:**
1. `StreamReader` nesnesini oluştur (örn: `StreamReader sr = new StreamReader("Test.txt")`).
2. Dosyayı satır satır oku (`string satir; while ((satir = sr.ReadLine()) != null) { ... }`).
3. Okunan satırları ekrana yaz (`Console.WriteLine(satir);`).
4. İşlem bittikten sonra dosyayı kapat (`sr.Close();`).
- **Dikkat edilmesi gereken:**
`using` kullanılmayacağı için, dosya kapatma işlemi çok önemli. Dosya açık kalırsa başka programlar erişemeyebilir veya hata alınabilir.
---
## **Ödev 2: Dosya okuma ve hata yönetimi**
- **Amaç:**
`Input.txt` dosyasını `StreamReader` ile okuyacaksın.
Ama bu sefer `using` kullanacaksın ve hata olursa (dosya bulunamazsa veya okunamazsa) `try-catch` bloklarıyla yakalayacaksın.
- **Adımlar:**
1. `try` bloğu başlat.
2. `StreamReader` ile dosyayı aç.
3. Dosyanın içeriğini okuyup, konsola yaz.
4. `catch (FileNotFoundException)` ile dosya bulunamazsa mesaj ver.
5. `catch (IOException)` ile diğer okuma hatalarını yakala.
- **Örnek kod:**
```csharp
try
{
using (StreamReader sr = new StreamReader("Input.txt"))
{
string content = sr.ReadToEnd();
Console.WriteLine(content);
}
}
catch (FileNotFoundException)
{
Console.WriteLine("Dosya bulunamadı.");
}
catch (IOException ex)
{
Console.WriteLine("Hata: " + ex.Message);
}
```
---
## **Ödev 3: Dosyanın ilk satırını koruyup, kalanını büyük harfe çevir ve satır numarası ekle**
- **İşlev:**
- İlk satırda genel bilgi var, onu değiştirmiyoruz.
- Geri kalan satırları büyük harfe çeviriyoruz.
- Satırların başına 2. satırdan itibaren satır numarası ekliyoruz.
- Sonuçları başka bir dosyaya yazıyoruz (`Output.txt`).
- **Adımlar:**
1. `Input.txt`'yi oku (ilk satırı ve kalan satırları ayır).
2. İlk satırı olduğu gibi sakla.
3. Kalan satırları büyük harfe çevir.
4. Satırların başına satır numarası ekle.
5. Yeni içeriği `Output.txt` dosyasına yaz.
- **Örnek kod:**
```csharp
using (StreamReader sr = new StreamReader("Input.txt"))
{
string ilkSatir = sr.ReadLine(); // ilk satır
List kalanSatirlar = new List();
string satir;
while ((satir = sr.ReadLine()) != null)
{
kalanSatirlar.Add(satir.ToUpper());
}
using (StreamWriter sw = new StreamWriter("Output.txt"))
{
sw.WriteLine(ilkSatir); // ilk satırı değiştirmiyoruz
int sayac = 1;
foreach (var s in kalanSatirlar)
{
sw.WriteLine($"{sayac} {s}");
sayac++;
}
}
}
```
- **Hata yönetimi:**
Try-catch ile dosya erişim hatalarını yakalayabilirsin.
---
## **Ödev 4: Dosya isminin geçerliliğini kontrol eden fonksiyon**
- **İşlev:**
`IsFileNameValid(string filename)` fonksiyonu,
- Dosya adının `.txt` uzantısı olup olmadığını kontrol edecek.
- Adın geçersiz karakterler içermediğine bakacak.
- **Adımlar:**
1. Uzantıyı alın: `string extension = Path.GetExtension(filename)`.
2. Uzantı `.txt` değilse `false` dön.
3. Geçersiz karakterleri alın: `char[] invalidChars = Path.GetInvalidFileNameChars()`.
4. Dosya adında bu karakterler varsa `false` dön.
5. Tüm kontrollerden sonra `true` dön.
- **Örnek kod:**
```csharp
static bool IsFileNameValid(string filename)
{
if (Path.GetExtension(filename).ToLower() != ".txt")
return false;
char[] invalidChars = Path.GetInvalidFileNameChars();
foreach (char c in invalidChars)
{
if (filename.Contains(c))
return false;
}
return true;
}
```
---
## **Ödev 5: Dosyaya string yazma fonksiyonu**
- **İşlev:**
`WriteStrToFile(string filename, string str)` fonksiyonu,
- Eğer dosya varsa içeriği değiştirir.
- Yoksa yeni dosya oluşturur ve yazar.
- **Adımlar:**
1. `File.WriteAllText()` kullan.
2. İşlemin başarılı olup olmadığını belirten `bool` dön.
- **Örnek kod:**
```csharp
static bool WriteStrToFile(string filename, string str)
{
try
{
File.WriteAllText(filename, str);
return true;
}
catch
{
return false;
}
}
```
---
## **Ödev 6: Dosyadan tüm metni okuyan fonksiyon**
- **İşlev:**
`ReadAllTextFromFile(string filename)` fonksiyonu,
- Dosyadaki tüm içeriği okur ve sonucu ekrana yazdırır veya geri döner.
- **Adımlar:**
1. `File.ReadAllText()` kullan.
2. İçeriği ekrana yaz.
- **Örnek kod:**
```csharp
static void ReadAllTextFromFile(string filename)
{
try
{
string content = File.ReadAllText(filename);
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine("Hata: " + ex.Message);
}
}
```
---
## **Özetle:**
Bu ödevler, temel dosya işlemlerini adım adım nasıl yapabileceğinizi öğretmek amaçlıdır.
İlk ödevde dosyayı açıp kapamayı, sonraki ödevlerde hata yönetimini, dosya içeriklerini değiştirmeyi ve dosya isimleriyle ilgili kontrolleri öğreniyorsun.
İstersen, herhangi bir adım veya kod üzerinde daha detaylı açıklama yapabilirim. Başka soruların var mı?
