Dosya işlemleri yapılan bir uygulamada üzerinde çalışılan dosya üzerindeki oluşturulma,değiştirilme tarihi gibi bilgilerini kullanma ihtiyacı olabilir.Hatta bu bilgilere yeni bilgiler eklenilmesi durumuda söz konusu olabilir.C#'da bu işlemi yapmak için System.IO namespace'inin altında bulunan File sınıfının metotlarını kullanacağız.Bu sınıfta bulunan en sık kullanılan metotlar;
-GetCreationTime() : Dosyanın oluşturulma tarihini getirir.
-GetLastWriteTime() : Dosyanın son değiştirilme(üzerine yazılması) zamanını getirir.
-GetLastAccessTime() : Dosyanın erişim tarihini getirir.
-SetLastWriteTime() : Parametresine string olarak aldığı dosyanın ikinci parametresinde belirtilen tarihi değiştirilme alanına yazar.
-SetLastAccessTime() : Parametresine verilen dosyanın son erişim tarihini değiştirmek için kullanılır.
-SetCreationTime() : Parametresinde belirtilen dosyanın oluşturulma tarihini değiştirmek için kullanılır.
Bu 6 metot ile bir dosyanın Oluşturulma,değiştirilme,erişim tarihlerini elde ettiğimiz gibi bu değerleride kullanıcı belirleyebiliyor.
Yukarıda bir dosyanın oluşturulma,değiştirilme ve erişim tarihleri gözükmektedir.Şimdi birkaç işlem yaparak bu bilgileri değiştirelim.Örneğimizin arayüzü aşağıdaki gibidir.
Kodları aşağıdadır.Programı çalıştırarak mesela 3 bilgiyide test etmek için 13 Eylül 2008 Cumartesi yapalım.13 Eylül doğum günümdür :)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO; // Dosya bilgilerini okumak ve yazmak için kullandığımız namespace
namespace DosyaOzellikleri
{
public partial class Form1 : Form
{
//secilen dosyanın yolunu tutan değişkenimiz
string dosyaYol;
public Form1()
{
InitializeComponent();
dosyaYol = "";
}
private void btnDosyaSec_Click(object sender, EventArgs e)
{
//DialogResult tipinden bir değişkenimiz açtığımız openFile'ın durunumu tutabilir.
DialogResult sonuc = openFileDialogDosyaSec.ShowDialog();
//Eger sonuc değişkenindeki deger yani dialogResult OK ise if blogu çalışır.
if (sonuc == DialogResult.OK)
{
btnKaydet.Enabled = true;
dosyaYol = openFileDialogDosyaSec.FileName;
lblDosyaYol.Text = "Dosya Yol : " + dosyaYol;
//Formumuzda 3 adet DateTimePicker var.Bunlar seçtiğimiz dosyanın değerini gösterecektir.File sınıfının Get ile başlayanları seçilen dosyanın özelliklerini getirir.GetCreationTime metodu parametre olarak aldığı dosya yolunun oluşturulma tarihi alıp DateTimePicker nesnemizin value'sına o tarihi atmaktadır.Diğer iki işlemde aynıdır.
dtOlusturulmaTarihi.Value = File.GetCreationTime(dosyaYol);
dtDegistirilmeTarihi.Value = File.GetLastWriteTime(dosyaYol);
dtErisimTarihi.Value = File.GetLastAccessTime(dosyaYol);
}
}
private void btnKaydet_Click(object sender, EventArgs e)
{
//Kaydet butonuna basıldğında dosya yolu boş değilse ve diger 3 checkBox'lardan herhangi biri işaretli ise çalışacak olan if blogumuz.
if (dosyaYol != "" && cbDegistirilme.Checked || cbErisim.Checked || cbOlusturulma.Checked)
{
//bu try blogumuzda işaretlenen cb'ye ait tarih bilgisini dosyanın o seçilen değerine atıyoruz.Get diyerek nasıl değerleri oluyorsak bu seferde Set diyerek atama yapılacak metodu seçiyoruz ilk parametresine dosyanın tam yolunu ikinci parametresinede yazılacak olan tarihi belirtiyoruz.
try
{
if (cbDegistirilme.Checked)
{
File.SetLastWriteTime(dosyaYol, dtDegistirilmeTarihi.Value);
}
if (cbErisim.Checked)
{
File.SetLastAccessTime(dosyaYol, dtErisimTarihi.Value);
}
if (cbOlusturulma.Checked)
{
File.SetCreationTime(dosyaYol, dtOlusturulmaTarihi.Value);
}
//GErekli combo'lar işaretlenirse mesaj veriyoruz kayıt edildi diye.
MessageBox.Show("Belirtilen ayarlar başarıyla değiştirildi", "Mesaj", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Hata oluştu", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
//herhangi bir checkBox işaretlenmemiş veya dosya yolu boş ise bu else blogu çalışacaktır.
else
{
MessageBox.Show("Değiştirmek istediğiniz işlemleri seçiniz","Uyarı",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
private void Form1_Load(object sender, EventArgs e)
{
btnKaydet.Enabled = false;
}
}
}
Programımızdan dosyamızı seçip o dosyanın bilgileri gelmekteydi.Şimdi belirtmek istediğimiz tarihleri girelim ve hepsinin değişmesini istediğimizden 3 özelliğinde checkBox'ını işaratleyerek değişmesini istediğimizi programımıza belirtiyoruz aşağıdaki gibi ve Kaydet butonuna basıyoruz..
Dosyamızın tarihlerini belirttikten sonra şimdi artık gidip seçtiğimiz dosyanın özelliklerine bakabiliriz.Görüldüğü gibi istediğimiz tarihleri dosyamıza bildirmiş oluyoruz.
Örnek projeyi indirmek için
Faydalı olması dileğiyle iyi çalışmalar :)
Serhat TAŞ