Path | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar path

Dosya veya Dizin isimlendirirken kullanmamanız gereken karakterler

05 March 2010 Yorum yapılmamış

System.IO namespace‘inde yer alan Path class‘ının

GetInvalidFileNameChars()

GetInvalidPathChars()

methodlarını kullanarak dosya veya dizin isimlendirirken kullanmamanız gereken karakterleri bulabilirsiniz.

Her iki method’dan da geriye char[] döner.

MSDN’de şuradaki makaleden GetInvalidFileNameChars() methodu ile ilgili ayrıntılı bilgiye ulaşabilirsiniz.

MSDN’de şuradaki makaleden GetInvalidPathChars() methodu ile ilgili ayrıntılı bilgiye ulaşabilirsiniz.

FileStream sınıfına Kaydet() ExtensionMethod’u yazalım

01 March 2010 Yorum yapılmamış

FileStream sınıfına yazacağımız Save() method’u sayesinde, aşağıdaki kodu kolaylıkla yazabilir olacağız. Üstelik bir tane de overload yazarak, varolan dosyanın üstüne yazmasını engelleyip, yeni bir dosya adı oluşturup yazma işlemine devam ettirebileceğiz.

fs.Kaydet("c:\\dosya_adi.uzanti");

Eğer aynı kodu, ikinci bir boolean parametreye true değeri vererek çağırırsak, klasörde dosya_adi.uzanti dosyası varsa dosya_adi[1].uzanti dosyasına yazmayı deneyecek, eğer bu dosya da varsa, dosya_adi[2].uzanti dosyasına deneyecek, vs..

fs.Kaydet("c:\\dosya_adi.uzanti", true);

İşte kodumuz;

namespace ExtensionManager
{
	public static class Extensions
	{
		public static string Kaydet(this FileStream Dosya, string Dizin)
		{
			return Dosya.Kaydet(Dizin, false);
		}

		public static string Kaydet(this FileStream Dosya, string Dizin, bool UstuneYaz)
		{
			int DosyaSayac = 1;

			string _Dizin = Path.GetDirectoryName(Dizin);

			if (!Directory.Exists(_Dizin))
				Directory.CreateDirectory(_Dizin);

			int DosyaBoyu = Convert.ToInt32(Dosya.Length);
			string DosyaAdi = Path.GetFileName(Dosya.Name);

			Byte[] b = new Byte[DosyaBoyu];
			Dosya.Read(b, 0, DosyaBoyu);

			string root = Path.GetDirectoryName(Dizin) + "\\" + Path.GetFileNameWithoutExtension(Dizin);

			while (!UstuneYaz && File.Exists(Dizin))
				Dizin = root + "[" + DosyaSayac++.ToString() + "]" + Path.GetExtension(Dizin);

			File.WriteAllBytes(Dizin, b);

			return Path.GetFileName(Dizin);
		}
	}
}

C# ile Geçici Dosya Oluşturmak

18 February 2010 Yorum yapılmamış

Uygulama geliştirirken bazen geçici olarak dosya oluşturmak zorunda kalabiliriz.

Fakat dosya oluşturma ve yazma iznimizin olduğu bir klasör olmasını her zaman garantileyemeyebiliriz.

Ayrıca, oluşturduğumuz dosya ile işimiz bittiğinde silinmesini de kendimizin yönetmesi gerekir.

Aşağıdaki kod ise, Windows‘un geçici dosyalar (temporary files) klasöründe rastgele isimde bir dosya oluşturur. Böylece geçici dosyanın temizlenmesi işini bizim yerimize Windows üstlenir.

public static string GeciciDosyaOlustur(string OnEk, string Uzanti)
{
	if (OnEk == null)
		throw new ArgumentNullException("OnEk");
	if (Uzanti == null)
		throw new ArgumentNullException("Uzanti");

	return Path.Combine(Path.GetTempPath(), String.Format("{0}.{1}.{2}", OnEk, Guid.NewGuid(), Uzanti));
}