1. meslek sırrı MOBİL PROGRAMLAMA
PCWORLD.COM.TR HAZİRAN ’10116
Volkan Atasever
volkan@volkanatasever.com
www.volkanatasever.com
Dizin işlemlerinden sonra temel
dosya işlemlerini öğrenmemiz ge-
rekiyor. Bunun için önemli sınıfları ve bu
sınıfların metodlarını inceleyeceğiz. Dos-
yalarla çalışırken temel olan iki sınıfımız
mevcut File sınıfı ve FileInfo sınıfı bun-
ları incelerken en son olarak stream’ler
ile beraber dosyalar üstünde istediğimiz
her işlemi yaptırabileceğiz. Öncelikli öğ-
renmemiz gerekense bu iki sınıf... İki sı-
nıfta benzer özelliklere sahip. Sınıflarımı-
zı incelerken örnek uygulamalar üstün-
den gideceğiz.
File Sınıfı
Kullanıcı arayüzümüzü oluşturalım. Bu
arayüz en çok kullanılan işlemleri uygu-
layabilmek için tasarlanmıştır. Uygulama-
nın dizaynını yapabilmek için yeni bir pro-
je oluşturmanız gerekiyor. (Resim 1)
C# Kodu:
using System;
using System.Windows.Forms;
using System.IO;
namespace SmartDeviceProject15
{
public partial class Form1 :
Form
{
public Form1()
{
InitializeCompo
nent();
}
private void button1_
Click(object sender, EventArgs e)
{
FileStream fstream =
File.Create(“volkan.txt”);
fstream.Close();
MessageBox.
Show(“Dosya oluşturuldu!”);
}
private void button2_
Click(object sender, EventArgs e)
{
File.Delete(@”My Do
cumentsvolkan.txt”);
MessageBox.
Show(“Dosya silindi”);
}
private void button3_
Click(object sender, EventArgs e)
{
if (File.Exists(@”My
Documentsvolkan.txt”))
{
MessageBox.
Show(“volkan.txt dosyası bulun
du!”);
}
else
{
MessageBox.
Show(“volkan.txt dosyası buluna
madı!”);
}
}
private void button4_
Click(object sender, EventArgs e)
{
File.Copy(“volkan.
txt”, @”My Documentsvolkan.
txt”);
MessageBox.
Show(“Dosya kopyalandı”);
}
private void button5_
Click(object sender, EventArgs e)
{
string str=File.
GetCreationTime(@”My Documents
volkan.txt”).ToString();
MessageBox.Show(str);
}
private void button6_
Click(object sender, EventArgs e)
{
File.Move(@”My Docu
mentsvolkan.txt”,@”My Documents
Personalvolkan.txt”);
MessageBox.
Show(“Dosya Taşnıdı”);
}
private void menuItem2_
Click(object sender, EventArgs e)
{
Application.Exit();
}
private void menuItem1_
Click(object sender, EventArgs e)
{
MessageBox.Show(“File
sınıfı ile dosya işlemleri...”);
}
}
}
Burada yapılan işlemleri adım adım açık-
layacağım. Baktığınız zaman her buton
olayı birbirinden bağımsız çalışıyor. Bunu
uygulamayı daha rahat anlatarak File sını-
fını en iyi şekilde irdelemek için yaptığımı
söyleyebilirim.
Dosya Oluştur (Buton 1): File sınıfı için-
deki Create metodu dosyayı FileStream
türünde döndürür. Bu nedenle bir FileSt-
ream sınıfına eşitledik. Bunun bir diğer ne-
deni ise bu dönüşü yakalayıp filestream’i
kapatmak istememizdir. Aksi halde fstre-
1
Temel dosya işlemlerine bir bakış ve kullanılan temel sınıfları yakından tanıyoruz.
Mobil Cihazda Dosya İşlemleri
mobil programlama_haziran.indd 116mobil programlama_haziran.indd 116 26.05.2010 20:3626.05.2010 20:36
2. meslek sırrı MOBİL PROGRAMLAMA
117PCWORLD.COM.TRHAZİRAN ’10
am.Close() metodunu kullanmazsak dos-
ya açık kalacak ve biz üzerinde işlem ya-
pamayacağız. Bu nedenle dosya yaratıl-
ma üzere açıldığı için onu kapatmamız
gerekmektedir. C# dilinden önce C veya
C++ dili kullananlar için dosya açıp kapat-
ma işlemleri yabancı gelmeyecektir.
Dosya Sil (Buton 2): Delete metodu ile
gösterdiğimiz yoldaki dosya silinecektir.
Dosya Mevcut mu? (Buton 3): Exists
metodu dosya varsa true yoksa false
döndürmektedir. Bu sebepten dolayı dos-
ya varsa “if” bloguna düşecektir. Karşıla-
şacağımız mesaj dosya bulundu şeklinde
olacaktır. Eğer dosya bulunamazsa else
bloguna düşüp bize diğer mesajı göste-
recektir.
Dosyayı Kopyala (Buton 4): Copy me-
todu iki parametre alır. İlk parametre
hangi dosyanın kopyalanacağını belir-
ten kaynak yolu göstermelidir. İkinci pa-
rametre ise nereye kopyalanacağını belir-
ten hedef yolu olmalıdır.
Dosyayı Oluşturma Bilgileri (Buton
5): GetCreationTime isminden de anlaşıl-
dığı gibi dosyanın oluşturulma zamanını
verir. Benzer metodlar dizinler içinde de
ele alınmıştı.
Dosyayı Taşı (Buton 6): Move meto-
du, copy metodu ile benzerlik gösterir.
İki parametre alır. İlk parametre kaynak
yani taşınacak dosyanın yolunu belirler.
İkinci parametre ise hedef yolu yani han-
gi klasörün altına taşınacağını gösterme-
miz için kullanılır.
FileInfo sınıfı
FileInfo sınıfı ile File sınıfı benzerlik göster-
mektedir. Bir nesne birden fazla kullanıla-
caksa bu sınıf önem kazanabilir. Bu sınıf-
daki temel farkları ele alan bbir örnek uy-
gulama üzerinde duracağım.
Kullanıcı arayüz tasarımımız: (Resim 2)
using System;
using System.Windows.Forms;
using System.IO;
namespace SmartDeviceProject17
{
public partial class Form1 :
Form
{
public Form1()
{
InitializeCompo
nent();
}
private void menuItem1_
Click(object sender, EventArgs e)
{
DirectoryInfo dirin
fo = new DirectoryInfo(@”My Docu
mentsMy Pictures”);
FileInfo[] fidizi =
dirinfo.GetFiles();
foreach (FileInfo fi
in fidizi)
{
listBox1.Items.
Add(“Dosya İsmi:” + fi.Name + “
Boyutu:” + fi.Length);
listBox1.Items.
Add(“Son Erişim Zamanı:” +
fi.LastAccessTime);
listBox1.Items.
Add(“Dosyanın Yaratılma tarihi” +
fi.CreationTime);
listBox1.Items.
Add(“Dosyanın uzantısı:” +
fi.Extension);
listBox1.Items.
Add(“---------------”);
}
}
private void menuItem2_
Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Uygulamanın çalıştırılmış ekran görüntü-
sü Resim 3’teki gibidir.
Uygulamamız FileInfo sınıfının özellikleri-
ni ve kullanım biçimini işlemiştir. Kullanı-
cı arayüzüne baktığımız zaman iki menu-
item, bir listbox ve bir label kontrolü gör-
mekteyiz. Label sadece uygulamanın is-
mini text olarak bize yansıtmak için kul-
lanılmıştır. Menuitem’larda ise bir liste-
le ve çıkış kontrolünü görüyoruz. Çıkış
standart çıkış işlemini yapıp “application.
exit()” metodu ile uygulamayı sonlandır-
maya yaramakta. FileInfo sınıfı ile ilgili en
can alıcı nokta ise listele kontrolümüzdür.
Burada yaptığımız işlem, dizinler bölü-
münde gördüğümüz “DirectoryInfo” sı-
nıfını oluşturmak. Ardından bir “FileInfo”
dizisi oluşturuyoruz ve oluşturduğumuz
DirectoryInfo üzerinden “GetFiles” meto-
dunu kullanarak bilgiler bu dizinin içine
atıyoruz. Bir diziye veya herhangi bir liste-
ye ulaşmak için kullanabileceğimiz “fore-
ach” döngüsü burada da imdadımıza ye-
tişiyor. Foreach döngüsü ile tek tek dos-
yalara erişiyoruz. Bundan sonra ise FileIn-
fo sınıfı içindeki metodları kullanarak dos-
ya bilgilerine erişim sağlıyoruz. Bu metod-
lar şu anlamları taşıyor.
Name: Dosyanın ismini geri döndürür.
Length: Dosyanın boyutunu geri dön-
dürür.
LastAccessTime: Dosyaya son erişim ta-
rihini bize döndürür.
CreationTime: Dosyanın yaratılma tari-
hini ve zamanını bize döndürür.
Extension: Dosyanın uzantısını öğren-
memize yarar.
2
3
mobil programlama_haziran.indd 117mobil programlama_haziran.indd 117 26.05.2010 20:3626.05.2010 20:36