Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# konsol uygulamalarında dışarıdan parametre alarak dosya etkileşimlerini nasıl gerçekleştireceğimizi detaylı bir şekilde inceleyeceğiz. Uygulamalarımızın komut satırından dosya yolları veya diğer ayarlar gibi girdiler alması, onları daha esnek ve otomatize edilebilir hale getirir. .NET Framework 4 ile birlikte gelen bu temel mekanizma, özellikle betik benzeri uygulamalar veya otomasyon araçları geliştirirken vazgeçilmezdir. Gelin, parametre bazlı dosya etkileşiminin temel adımlarını ve kullanım senaryolarını birlikte keşfedelim.
Parametre Bazlı Dosya Etkileşimi Nedir?
Parametre bazlı dosya etkileşimi, bir konsol uygulamasının çalıştırılırken komut satırından aldığı argümanlara (parametreler) göre belirli dosya işlemleri yapması anlamına gelir. Örneğin, uygulamanızı MyApp.exe "C:\input.txt" "D:\output.txt"
şeklinde çalıştırarak, uygulamanızın input.txt
dosyasını okuyup, işleyip, sonucu output.txt
dosyasına yazmasını sağlayabilirsiniz.
Komut Satırı Argümanlarına Erişim: string[] args
C# konsol uygulamalarında, Main
metodunun aldığı string[] args
parametresi, komut satırından uygulamaya geçirilen tüm argümanları içeren bir string dizisidir. Her bir boşlukla ayrılmış değer, dizinin ayrı bir elemanı olarak kabul edilir.
using System;
class Program
{
static void Main(string[] args)
{
// Uygulama komut satırından argümanlarla çalıştırıldığında:
// MyApp.exe arguman1 arguman2 "arguman 3"
if (args.Length > 0)
{
Console.WriteLine("Uygulamaya gelen argümanlar:");
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine($"Argüman {i}: {args[i]}");
}
}
else
{
Console.WriteLine("Uygulamaya herhangi bir argüman geçirilmedi.");
}
Console.ReadLine(); // Konsolun kapanmasını engellemek için
}
}
Yukarıdaki örnekte, eğer uygulamayı MyApp.exe dosya1.txt "dosya 2.txt" ayar=true
şeklinde çalıştırırsanız, args
dizisi şu elemanları içerecektir:
args[0]
: "dosya1.txt"args[1]
: "dosya 2.txt"args[2]
: "ayar=true"
Unutmayın ki boşluk içeren argümanları tırnak işaretleri ("
) içine almanız gerekir.
Örnek 1: Parametre Bazlı Dosya Okuma
Bu örnekte, komut satırından verilen bir dosya yolunu okuyacak ve içeriğini konsola yazdıracağız.
using System;
using System.IO; // Dosya işlemleri için
class DosyaOkuyucu
{
static void Main(string[] args)
{
// Argüman kontrolü: En az bir argüman (dosya yolu) bekliyoruz
if (args.Length == 0)
{
Console.WriteLine("Kullanım: DosyaOkuyucu.exe <dosya_yolu>");
Console.WriteLine("Örnek: DosyaOkuyucu.exe C:\\Veriler\\metin.txt");
Console.ReadLine();
return;
}
string dosyaYolu = args[0]; // İlk argümanı dosya yolu olarak al
try
{
// Dosyanın varlığını kontrol et
if (File.Exists(dosyaYolu))
{
// Dosya içeriğini oku
string dosyaIcerigi = File.ReadAllText(dosyaYolu);
Console.WriteLine($"'{dosyaYolu}' dosyasının içeriği:");
Console.WriteLine("-----------------------------------");
Console.WriteLine(dosyaIcerigi);
Console.WriteLine("-----------------------------------");
}
else
{
Console.WriteLine($"Hata: '{dosyaYolu}' dosyası bulunamadı.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Dosya okunurken bir hata oluştu: {ex.Message}");
}
Console.ReadLine();
}
}
Bu uygulamayı derledikten sonra (örneğin DosyaOkuyucu.exe
), komut istemcisinden şu şekilde çalıştırabilirsiniz:
DosyaOkuyucu.exe C:\Path\To\Your\File.txt
Eğer C:\Path\To\Your\File.txt
adında bir dosya varsa, içeriği konsola yazdırılacaktır.
Örnek 2: Parametre Bazlı Dosya Yazma
Bu örnekte, komut satırından verilen bir dosya yoluna ve bir metne göre dosya oluşturacak veya üzerine yazacağız.
using System;
using System.IO;
class DosyaYazici
{
static void Main(string[] args)
{
// Argüman kontrolü: İki argüman (dosya yolu ve yazılacak metin) bekliyoruz
if (args.Length < 2)
{
Console.WriteLine("Kullanım: DosyaYazici.exe <dosya_yolu> <yazilacak_metin>");
Console.WriteLine("Örnek: DosyaYazici.exe C:\\Loglar\\log.txt \"Bu bir log mesajıdır.\"");
Console.ReadLine();
return;
}
string dosyaYolu = args[0]; // İlk argüman dosya yolu
string yazilacakMetin = args[1]; // İkinci argüman yazılacak metin
try
{
// Dosyaya metni yaz (varsayılan olarak üzerine yazar)
File.WriteAllText(dosyaYolu, yazilacakMetin);
Console.WriteLine($"'{dosyaYolu}' dosyasına başarıyla yazıldı.");
}
catch (Exception ex)
{
Console.WriteLine($"Dosyaya yazılırken bir hata oluştu: {ex.Message}");
}
Console.ReadLine();
}
}
Bu uygulamayı derledikten sonra (örneğin DosyaYazici.exe
), komut istemcisinden şu şekilde çalıştırabilirsiniz:
DosyaYazici.exe C:\MyLogs\app_log.txt "Uygulama başarıyla başlatıldı."
Bu komut, C:\MyLogs\app_log.txt
adında bir dosya oluşturacak ve içine "Uygulama başarıyla başlatıldı." metnini yazacaktır. Eğer dosya zaten varsa, içeriğini bu yeni metinle değiştirecektir.
Örnek 3: Birden Fazla Argüman ve Seçenek İşleme
Daha karmaşık senaryolarda, uygulamanız farklı türde argümanlar alabilir (örneğin, bir komut, bir dosya yolu, bir ayar bayrağı). Bu durumda, argümanları ayrıştırmak için daha gelişmiş bir mantık kullanmanız gerekebilir.
using System;
using System.IO;
class GelişmişDosyaIsleyici
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("Kullanım: GelişmişDosyaIsleyici.exe <komut> <dosya_yolu> [seçenekler...]");
Console.WriteLine("Komutlar: oku, yaz");
Console.WriteLine("Örnek: GelişmişDosyaIsleyici.exe oku C:\\veri.txt");
Console.WriteLine("Örnek: GelişmişDosyaIsleyici.exe yaz C:\\cikti.txt \"Merhaba Dünya\" --ekle");
Console.ReadLine();
return;
}
string komut = args[0].ToLower(); // İlk argümanı komut olarak al
string dosyaYolu = args[1]; // İkinci argüman dosya yolu
bool eklemeModu = false; // Varsayılan olarak üzerine yazma modu
// Seçenekleri kontrol et
for (int i = 2; i < args.Length; i++)
{
if (args[i].ToLower() == "--ekle")
{
eklemeModu = true;
}
}
switch (komut)
{
case "oku":
try
{
if (File.Exists(dosyaYolu))
{
string icerik = File.ReadAllText(dosyaYolu);
Console.WriteLine($"'{dosyaYolu}' dosyasının içeriği:\n{icerik}");
}
else
{
Console.WriteLine($"Hata: '{dosyaYolu}' dosyası bulunamadı.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Dosya okunurken hata: {ex.Message}");
}
break;
case "yaz":
if (args.Length < 3)
{
Console.WriteLine("Yazma komutu için metin belirtmelisiniz.");
break;
}
string yazilacakMetin = args[2];
try
{
if (eklemeModu)
{
File.AppendAllText(dosyaYolu, yazilacakMetin + Environment.NewLine);
Console.WriteLine($"'{dosyaYolu}' dosyasına metin eklendi.");
}
else
{
File.WriteAllText(dosyaYolu, yazilacakMetin);
Console.WriteLine($"'{dosyaYolu}' dosyasına metin yazıldı.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Dosyaya yazılırken hata: {ex.Message}");
}
break;
default:
Console.WriteLine("Geçersiz komut. 'oku' veya 'yaz' kullanın.");
break;
}
Console.ReadLine();
}
}
```
Bu uygulamayı şu şekilde çalıştırabilirsiniz:
GelişmişDosyaIsleyici.exe oku C:\Logs\mydata.txt
GelişmişDosyaIsleyici.exe yaz C:\Logs\new_log.txt "Yeni log mesajı"
GelişmişDosyaIsleyici.exe yaz C:\Logs\existing_log.txt "Eklenecek satır." --ekle
Dikkat Edilmesi Gerekenler
- Argüman Doğrulama: Uygulamanızın beklediği argüman sayısını ve formatını her zaman kontrol edin. Eksik veya yanlış argümanlar için kullanıcıya bilgilendirici mesajlar gösterin.
- Dosya Yolu Güvenliği: Kullanıcıdan alınan dosya yollarını doğrudan kullanmadan önce güvenlik kontrolleri yapın. Örneğin, uygulamanızın erişim izni olmayan yerlere yazmaya çalışmasını veya hassas sistem dosyalarını silmesini engelleyin.
- Hata Yönetimi: Dosya işlemleri sırasında (okuma, yazma, silme)
IOException
,UnauthorizedAccessException
gibi çeşitli hatalar oluşabilir. Bu hatalarıtry-catch
blokları ile yakalayarak uygulamanızın çökmesini engelleyin ve kullanıcıya anlamlı geri bildirimler sağlayın. - Tırnak İşaretleri: Boşluk içeren dosya yollarını veya metinleri komut satırından geçirirken mutlaka çift tırnak (
"
) kullanın.
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile komut satırı argümanlarını kullanarak parametre bazlı dosya etkileşimlerini nasıl gerçekleştireceğimizi detaylı bir şekilde inceledik. Bu yöntem, özellikle otomasyon betikleri, veri işleme araçları ve komut satırı tabanlı yardımcı uygulamalar geliştirirken size büyük esneklik sağlar. Argümanları doğru bir şekilde ayrıştırmak ve hata yönetimini sağlamak, güvenilir ve kullanışlı uygulamalar oluşturmanın anahtarıdır. Umarım bu rehber, C# .NET Framework 4 ile uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!
Hepinize parametrelerle dolu ve başarılı dosya işlemleri dilerim!
0 yorum:
Yorum Gönder