DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve...

20
    ÜNİTE 8 DOSYA VE KLASÖR İŞLEMLERİ İÇİNDEKİLER • Dosya ve Klasör İşlemleri • Klasör Sınıfları (Directory ve DirectoryInfo) • Dosya Sınıfları (File ve FileInfo) • Dosyalarda Okuma Ve Yazma İşemi Yapabilen Sınıflar (FileStream, StreamReader ve StreamWriter) HEDEFLER •Bu üniteyi çalıştıktan sonra; • Klasör ve dosya  sınıflarına ait metotları anlayabilecek, •Yeni klasör ve dosya tanımlayarak, kopyalama,silme ve taşıma işlemleri yapabilecek, •Dosyalara bilgi yazabilecek ve onları okuyabileceksiniz. NESNE TABANLI PROGRAMLAMA  I Okt. Mustafa AKBUĞA

Transcript of DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve...

Page 1: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

 

 

   

ÜNİTE

8

DOSYA VE KLASÖR İŞLEMLERİ 

İÇİNDEK

İLER • Dosya ve Klasör İşlemleri

• Klasör Sınıfları (Directory ve DirectoryInfo)

• Dosya Sınıfları (File ve FileInfo)

• Dosyalarda Okuma Ve Yazma İşemi Yapabilen Sınıflar (FileStream, StreamReader ve StreamWriter)

HED

EFLER

•Bu üniteyi çalıştıktan sonra;

•Klasör ve dosya  sınıflarına ait metotları anlayabilecek,

•Yeni klasör ve dosya tanımlayarak, kopyalama,silme ve taşıma işlemleri yapabilecek, 

•Dosyalara bilgi yazabilecek ve onları okuyabileceksiniz.

NESNE TABANLI 

PROGRAMLAMA – I 

Okt. Mustafa AKBUĞA

Page 2: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    2 

GİRİŞ  

 Bilgisayar sistemlerinde kayıtlı veriler, genellikle dosya ve klasörler 

yardımıyla organize edilir. Bilgisayar yazılımları verilere ihtiyaç duyduklarında ya 

klasörler içerisinde yer alan dosyaları okuyarak ya da klavye veya mouse gibi girdi 

aygıtları kullanarak temin ederler. Programların çalışması sonucu  ortaya çıkan yeni 

sonuçlar ise  Ekran veya Yazıcı gibi aygıtlar vasıtasıyla gösterilir ya da ilgili dosyalara 

tekrar kaydedilir.  

Programlama dilleri içerisinde yer alan girdi veya çıktı işlemlerine I/O 

işlemleri denir ve bu terim İngilizce Input / Output ' un kısaltılması sonucu elde 

edilir. Dosyaya bilgi kaydetmek, okumak, ekrana ya da yazıcıya bilgi yazdırmak gibi 

işlemler birer I/O işlemlerdir. Visual C# dilinde de I/O sistemi ile ilgili tüm sınıflar 

System.IO isim alanında yer alır. 

Bu bölümde Visual C# programlama dilinde System.IO isim alanı içerisinde yer 

alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en 

yaygın  kullanılan  sınıflar  incelenecek  ve bu  sınıflarla  ile  fonksiyonlar  ve metotlar 

hakkında bilgiler verilecektir. 

DOSYA VE KLASÖR İŞLEMLERİ  

Disk üzerinde yer alan dosyalar genelde ya ana klasörde ya da sonradan 

oluşturulan alt klasörler (dizin)  içerisinde tutulur. Bu sebeple konu anlatımına 

klasör sınıflarıyla başlanmıştır. Bilgisayar programları veri alma ve ya gönderme 

işlemini stream (akım) denen, byte (8 bit) seviyesinde bilgi akışıyla gerçekleştirir. 

Visual C# dilinde yapılan projelerde I/O sistemiyle ilgili tüm veri akımları, System. 

IO isim alanında bulunan Stream sınıflarıyla gerçekleştirilir. Bu sınıflar genellikle 

dosya ve klasör sınıflarıyla birlikte kullanılır ve dosyalar üzerinde hem okuma hem 

de yazma işlemi yapılmasını kolaylaştırırlar.  

Directory ve DirectoryInfo sınıfları klasörleri temsil ederken, File ve FileInfo 

sınıfları dosyaları temsil etmektedir. Path sınıfı ise klasörler ve dosyaların yol (konum 

adresleri) ile ilgili işlemler yapmakta kullanılır. Dosya ve Klasörler ile işlem yaparken 

kullanılan  sınıflara  ait  metot  ve  fonksiyonların  derleyici  tarafından  tanınmasını 

sağlamak  için  programın  en  başına  şekil  8.1’deki  gösterildiği  şekliyle  kodların 

eklenmesi gerekir;  

 

Şekil 8.1. Temel I/O sınıf kütüphanesinin program koduna eklenmesi 

 

 

Visual C# Program 

dilinde kod yazarken, ilk 

satır using.System; 

kodu  ile başlar. Bu satır 

temel sınıf 

kütüphanelerinin 

açılmasını sağlar. 

Page 3: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    3 

Klasör Sınıfları 

Klasör işlemleri, System. IO isim alanındaki Directory ve DirectoryInfo 

sınıflarıyla yapılmaktadır. Bu sınıfların dosya işlemleri için kullanılan klasör 

oluşturma, Bir yerden bir yere taşıma ve klasör özelliklerini değiştirme gibi birçok 

metodu bulunmaktadır. Aşağıda bu metodlar ve en çok kullanılan sınıfların 

kullanımlarıyla ilgili bilgiler verilmektedir. 

CreateDirectory ( ) Metodu:  Bu metot, yeni bir klasör hazırlamak amacıyla 

kullanılır. Aşağıda örnek program_1 kodlarında nasıl kullanıldığı gösterilmektedir. 

Directory. CreateDirectory("C:\\AOF");  

Bu kod C:\  anadizininde Aof isimli bir klasör oluşturur.  

Directory. CreateDirectory("AOF");  

Bu kod programın çalıştığı klasörde Aof isimli bir klasör oluşturur.  

Directory.CreateDirectory(@"..\AOF");  

Bu kod programın çalıştığı klasörün bir üst klasöründe test isimli bir klasör oluşturur.  

Directory.CreateDirectory(@"..\..\AOF");  

Bu kod programın çalıştığı klasörün iki üst klasöründe Aof isimli bir klasör oluşturur.  Örnek program_1:   

 

Şekil 8.2. AOF isimli bir klasör oluşturulmasını sağlayan örnek program kodları  

 

 

 

 

Adres tanımı yapılırken; 

string ifadenin başında 

@, işareti kullanılırsa, 

adres bilgisindeki \ 

işareti tek olarak 

kullanılır. Eğer @ işareti 

kullanılmazsa adres 

bilgisinde \\ işareti çift 

olarak kullanılmalıdır. 

Page 4: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    4 

 

Şekil 8.3. AOF isimli bir klasörün C sürücüsündeki görünümü 

  Şekil 8.2’de gösterilen örnek program_1‘de CreateDirectory metodunun 

parametresi olarak verilen adres ve isimde şekil 8.3‘de gösterilen AOF klasörü 

oluşturulmuştur. 

Exists ( ) Metodu:  Bu metot, verilen adreste klasörün olup olmadığını kontol 

eder. Klasör varsa true, yoksa false değerleri döndürür. 

bool b= Directory. Exists(@"c:\AOF"); 

Move ( ) Metodu:  Bu metod, ilk olarak verilen adreste bulunan klasörü, ikinci 

verilen adresteki konuma taşır. 

Directory. Move (@ “c:\Aof”, @ “c:\ERZURUM\ATA”); 

Yukarıda verilen kod, c:\   anadizininde yer alan Aof isimli klasörü, yine c, 

anadizini içinde yer alan ERZURUM klsörünün içindeki ATA alt dizinin içerisine 

taşımaktadır.  

Delete ( ) Metodu:  Bu metod, klasörleri silmek için kullanılır. İki tip kullanım 

biçimi vardır. Aşağıda verilen örnek kodlarda nasıl kullanıldığı 

gösterilmektedir. 

Directory. Delete(@"c:\AOF"); 

Yukarıda verilen kod, C:\  anadizininde yer alan Aof isimli bir klasörün içinde bir 

şey yoksa silme işlemi yapar. Klasörün içi doluysa silme işlemi için; 

Directory. Delete(@"c:\AoF",bool a); 

 

Bir klasör ya da dosya 

oluşturmadan önce 

mutlaka ilgili klasör ve 

dosyanın diskte olup 

olmadığının Exists() 

metoduyla kontrolü 

gereklidir. Yapılacak bu 

işlem programın hata 

üretmesinin önüne 

geçecektir. 

Page 5: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    5 

Yukarıda verilen kod, a değişkeninin içi true ise ilgili  “c:\” adresindeki Aof klasörü 

içindeki dosya ve klasörlerle beraber silinmesini sağlar. 

GetCurrentDirectory ( ) Metodu:  Bu metot, çalışan programın hangi klasörde 

olduğunu gösterir. 

string c= Directory. GetCurrentDirectory( ); 

Yukarıda verilen kod, c değişkeninin içi GetCurrentDirectory metoduyla okunan 

adres bilgisi ile doldurulur. 

SetCurrentDirectory ( ) Metodu: Bu metot, Program için geçerli olan klasörü 

değiştirmek için kullanılır. 

SetCurrentDirectory(@“D:\\”); 

Yukarıda verilen kod, daha önce program için geçerli olan adresi C:\\ sürücüsünü 

D:\\ sürücüsü olarak değiştirir. 

GetDirectories ( ) Metodu:  Bu metot, verilen adresteki bütün klasörleri bularak 

isimlerini gösterir. 

string [ ] d  = Directory. GetDirectories(@"c:\AoF" ); 

Yukarıda verilen kod, string dizisinin içini GetDirectories metoduyla okunan 

adresteki tüm klasörlerin isimleriyle doldurur. 

GetDirectoryRoot ( ) Metodu:  Bu metot, verilen yoldaki klasörün bulunduğu kök 

dizin bilgisini ve volume bilgisini elde ederek isimlerini gösterir. 

string e= Directory. GetDirectoryRoot (@"c:\AoF"); 

Adres olarak verilen ile d string dizisinin içine GetDirectoryRoot metoduyla okunan 

adresten, kök dizin ve disk volume bilgisini elde ederek e string değişkenine aktarır. 

GetCreationTime ( ) Metodu: Bu metot, verilen yoldaki klasörün hangi tarihte 

oluşturulduğunu gösterir.   

DateTime f=Directory. GetCreationTime(@"c:\AOF"); 

GetLastAccessTime ( ) ve GetLastWriteTime ( )Metodları: GetLastAcessTime 

metodu, verilen yoldaki klasöre en son ne zaman erişildiğini ve GetLastWriteTime 

metodu ise en son üzerinde ne zaman işlem yapıdığını gösterir. 

DateTime g = Directory. GetLastAcessTime(@"c:\AOF"); 

DateTime h=Directory. GetLastWriteTime(@"c:\AOF"); 

 

 

 

 

 

 

Geliştirilen yazılımlarda; 

program içerisindeki 

yedekleme modülünde 

dosya ve klasör üzerinde 

işlem yaparken 

GetCurrentDirectory(), 

SetCurrentDirectory()  ve 

GetCreationTime() 

metodları büyük kolaylık 

sağlar. 

Page 6: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    6 

Örnek program_2: 

 

Şekil 8.4. Directory sınıfına ait metotların kullanımını gösteren örnek program 

 

Şekil 8.5. Örnek program_2’nin ekran görüntüsü 

Yukarıda Şekil 8.4’de Program_2 olarak verilen klasör işlemleri Directory 

sınıfının metodları kullanılarak yapılmıştır. Yapılan bu  klasör işlemlerinin aynısı 

istenirse DirectoryInfo sınıflarının metodları kullanılarak yapılabilir. Bu sınıfın 

metodlarını kullanabilmek için DirectoryInfo tipinde bir değişken hazırlamak 

gereklidir. 

 Bu işlemin nasıl yapıldığı Şekil 8.6’da kodları gösterilen program_3 içerisinde 

ayrıntılı olarak görülmektedir. 

 

 

 

 

 

 

Page 7: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    7 

Örnek program_3 

 

Şekil 8.6. DirectoryInfo sınıfına ait metodların kullanımını gösteren örnek program 

 

Şekil 8.7. Örnek program_3’ün ekran görüntüsü 

Yukarıda verilen şekil 8.5 ve Şekil 8.7 de ekran çıktıları karşılaştırıldığında her 

iki sınıfında aynı işi yaptığı görülecektir. Fakat her iki sınıfın da kullanım biçimi 

birbirinden farklıdır. DirectoryInfo sınıfında olan fakat Directory sınıfında olmayan 

metodlardan bazıları aşağıda gösterilmiştir. 

Create ( ) Metodu: Belirtilen adreste bir klasör oluşturur. 

CreateSubdirectory ( ) Metodu: Belirtilen adreste bir alt klasör oluşturur.  

Attributes ( ) Metodu: Belirtilen adresteki klasörün ( Gizli, Yalnız okunur, Arşiv) 

özelliklerini görmek için kullanılır. 

FullName ( ) Metodu: Belirtilen adresteki bir klasörün tam adını öğrenmek için 

kullanılır. 

Name ( ) Metodu: Belirtilen adresteki bir klasörün sadece adını öğrenmek için 

kullanılır. 

Page 8: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    8 

Extention ( ) Metodu: Belirtilen adresteki bir klasörün uzantısı varsa öğrenmek için 

kullanılır. 

MoveTo ( ) Metodu: Belirtilen adresteki bir klasörün içindeki bütün klasör ve 

dosyalar ile belirtilen başka bir adrese taşınması için kullanılır. 

Root ( ) Metodu: Belirtilen adresteki klasörün bulunduğu kök dizin bilgisini 

gösterir. 

Parent ( ) Metodu: Belirtilen adresteki klasörün dâhil olduğu üst klasöre geçmek 

için kullanılır. 

DirectoyInfo sınıfının bazı metodlarının kullanımı Program_3 içerisinde 

gösterilmişti. Program_3 içerisinde yer almayan diğer metodların kullanımı 

aşağıdaki program kodunda gösterilmiştir. Bu kodların çalışması için işaretli 

kodların, program_3 de gösterildiği gibi Main metodu içerisine yazılması gerekir. 

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ string adres = @"C:\aof1";  DirectoryInfo deneme = new DirectoryInfo(adres);  deneme.Create();  DirectoryInfo alt = deneme. CreateSubdirectory("aof1");  Console. WriteLine("Özellikler: " + deneme. Attributes);  Console. WriteLine("Uzantı: " + deneme. Extension);  Console. WriteLine("Tam adres: " + deneme. FullName);  Console. WriteLine("Klasör adı: " + deneme. Name);  Console. WriteLine("Bir üst klasör: " + deneme. Parent);  Console. WriteLine("Kök dizin: " + deneme. Root); 

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 

Dosya Sınıfları 

Dosya işlemleri, System. IO isim alanındaki File ve FileInfo sınıflarıyla 

yapılmaktadır. File sınıfındaki birçok metot Directory ve DirectoryInfo sınıfında da 

vardır fakat tek farkları aynı görevleri dosyalar içinde yerine getirmeleridir.  

Create ( )  Metodu: Parametre olarak verilen adres üzerinde istenen ad ve uzantıda 

dosya oluşturur. 

File.Create(@"c:\aof.txt"); 

Copy ( )  Metodu: Parametre olarak verilen adresler arasında dosya kopyalama 

işlemi gerçekleştirir. 

File.Copy(@"c:\aof.txt",@"d:\aof.txt"); 

 

Move ( )  Metodu: Parametre olarak verilen adresler arasında dosya taşıma işlemi 

gerçekleştirir. 

File.Move(@"c:\aof.txt",@"d:\aof.txt"); 

Page 9: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    9 

Delete ( )  Metodu: Parametre olarak verilen adresteki dosyayı silme işlemi 

gerçekleştirir. 

File.Delete(@"c:\aof.txt"); 

GetCreationTime ( )  Metodu: Parametre olarak verilen adresteki dosyayı ne 

zaman oluşturulduğunu öğrenmek için kullanılır. 

DateTime dosyaZaman =Directory. GetCreationTime("c:\\aof. 

txt"); 

Yukarıdaki koda dikkat edilirse dosyanın ne zaman oluşturulduğunu 

öğrenme işleminde Directory sınıfının GetCreationTime metodu kullanılmıştır. 

Exists(), Delete(), GetCreationTime(), GetLastAccessTime(), GetLastWriteTime() gibi 

metodlarda adres içeriği verilirken dosya ismi ve uzantısı da verildiğinde bu 

metodlar dosyalar için de geçerli olmaktadır.  

 Directory ve DirectoryInfo arasındaki kullanım farkları File ve FileInfo 

arasında da geçerlidir. Her iki sınıf arasındaki kullanım farkları Şekil 8.8 ‘de 

gösterilen program_4’teki kodlar FileInfo sınıfı kullanılarak yazılmıştır. 

Program_4‘ün çalıştırılması ile Şekil 8.9’da gösterilen ekran çıktısı elde edilir. 

Örnek program_4 

 

Şekil 8.8. File sınıfına ait metotların kullanımını gösteren örnek program 

Page 10: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    10 

 

  Şekil 8.9. Örnek program_4’ün ekran görüntüsü 

Dosyalar üzerinde işlem yaparken parametre olarak verdiğimiz adres bilgisi 

üzerinde de işlem yapan sınıflar mevcuttur. Bu sınıfların en önemlisi Path sınıfıdır. 

Bu sınıfın en önemli metodu ise GetTempFileName() metodudur. 

 Bu metot sistemimizin temp klasöründe oluşturduğu bir dosyanın ismini 

döndürür. Dosyalar üzerinde geçici işlemler yapılmak istendiğinde genelde bu 

metot kullanılır. Bu sınıf hakkında daha geniş bilgi için bkz.Nesne Tabanlı 

Programlama‐2 

Dosya üzerinde okuma ve yazma işlemi yapabilen sınıflar 

         Dosyalar üzerinde okuma veya yazma işlemleri yapabilmek için, System. IO 

isim alanında yer alan FileStream, StreamReader ve StreamWriter olmak üzere 

genelde bu sınıflarından yararlanılır. Bir dosya üzerinde okuma ve yazma işlemi için 

öncelikle onu açmak gereklidir. Dosyanın açılması sırasında FileStream sınıfı, 

dosyayı okurken StreamReader ve dosyaya yazmak içinse StreamWriter sınıfları 

kullanılır. Açılan her dosya üzerinde yapılan işlem bitirildiğinde mutlaka 

kapatılmalıdır. Dosyayı kapatmak için Stream sınıfının parametresiz Close( )  

fonksiyonu kullanılır.  

FileStream Sınıfı: FileStream, disk üzerindeki dosyalarda veri alış‐verişi 

yapmayı sağlayan bir kanal oluşturur. Bu veri kanalının kontrolü verilen 

parametrelerle sağlanır. Bu sınıf ile aynı zamanda dosyalardan byte tabanlı veriler 

okunabilir fakat StreamReader text tabanlı okuma yapabildiğinden bu sınıftan daha 

kullanışlıdır. 

Genel olarak kullanımı; 

FileStream dosya= new FileStream (string A, FileMode. B,  

FileAccess. C, FileShare. D);  

 

Page 11: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    11 

FileStream dosya = new FileStream(@"AoF.txt", FileMode.OpenOrCreate, 

FileAccess.Write, FileShare.None); 

String A: ( @"c:\AoF.txt" )  parametresi ile dosyanın diskteki adresi, ismi ve uzantısı 

birlikte verilir.  

FileMode. B: ( FileMode. OpenOrCreate )  parametresi ise dosyanın ne amaçla 

açılacağını belirtir. FileMode’a seçilecek değerle bu amaç belli edilir, buraya 

gelebilecek değerler Tablo 8.1’ de verilmektedir. 

Tablo 8.1. FileStream sınıfına ait Filemode seçenekleri 

FileMode Seçenekleri 

Açıklama 

Create  FileMode.Create seçeneği ile yeni bir dosya oluşturulur, aynı dosya varsa üzerine yazılır. 

CreateNew  Yeni bir dosya oluşturulur, eğer aynı dosya var ise IOException hatası alınır. 

Append  Dosya açılarak sonundan başlayarak yazma işlemi yapılır. Eğer dosya yok ise oluşturulur. FileMode.Append seçeneği sadece FileAccess.Write seçeneği ile kullanılır diğer kullanımlarda ArgumentException hatası alınır. 

Open  Dosya belirtilen dizinde var ise açılır. Eğer dosya yoksa FileNotFoundException hatası alınır. 

OpenOrCreate  Dosya belirtilen dizinde var ise açılır yok ise oluşturulur. 

Truncate  Dosya açılır ve içerisi boşaltılıp boyutu 0 byte olarak güncellenir. 

FileAccess. C: (FileAccess. Write), parametre ise dosyaya hangi erişim 

yetkisiyle açılacağını belirler. FileAccess’e seçilecek değerle bu amaç belli edilir, 

buraya gelebilecek değerler Tablo 8.2’de verilmektedir. 

Tablo 8.2. FileStream sınıfına ait FileAccess seçenekleri 

FileAccess seçenekleri  Açıklama 

Read  Dosyaya sadece okuma erişim yetkisi verir. 

Write  Dosyaya sadece yazma erişim yetkisi verir. 

ReadWrite  Dosyaya okuma/yazma erişim yetkisi verir. 

FileShare. D: (FileShare. None ) parametresi, bu parametre ile kullanılan 

kaynak dosyanın diğer strem’ler tarafından nasıl paylaşılacağını belirler. FileShare 

’e seçilecek değerle bu amaç belli edilir, buraya gelebilecek değerler tablo 8.3’ de 

verilmektedir. 

 

 

 

Page 12: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    12 

Tablo 8.3. FileStream sinifina ait FileShare seçenekleri 

FileShare seçenekleri 

Açıklama 

None  İşlem yaptığınız stream dışındaki başka bir stream dosyaya okuma veya yazma için erişim sağlayamaz. 

Read  İşlem yaptığınız veya başka stream'ler dosyaya okuma için erişim sağlayabilirler. 

Write  İşlem yaptığınız veya başka stream'ler dosyaya yazma için erişim sağlayabilirler.

ReadWrite  İşlem yaptığınız veya başka stream'ler dosyaya okuma ve yazma için erişim sağlayabilirler. 

StreamReader sınıfı: StreamReader sınıfı ile dosyalardan text tabanlı veriler 

okunabilir. Bir StreamReader nesnesi aşağıdaki yöntemlerle oluşturulabilir. Bu 

sınıfın kullanımıyla ilgili kodlar Şekil 8.10‘da program_5 içerisinde gösterilmiştir. 

Program_5 in çalıştırılması neticesinde Şekil 8.12’deki ekran elde edilir. Program_5’ 

deki kodların Şekil 8.12 deki gibi sonuç  üretmesi için Aof.txt dosyası notepad.exe 

programıyla oluşturulup içerisinde Şekil 8.11’deki text’in yazılması gerekmektedir. 

FileStream sınıfının FileMode parametresine create seçeneği de yazılabilir. Bu 

durumda dosya yeni oluşturulduğu için içerisi boş olarak gelecektir. 

 string adres = @"C:\Aof.txt"; FileStream deneme= new FileStream(adres, FileMode.Open); StreamReader okumaNesnesi1 = new StreamReader(deneme); 

 

StreamReader sınıfının önemli metotları:  

Close(): Açılan dosyadaki veri kanalını kapatır.  

ReadLine( ) metodu: Dosyada içerisinde oluşturulan veri kanalından bir sonraki 

metin satırını okur ve bunu string olarak döndürür. Eğer okunacak satır 

bulunmazsa geriye null değeri döndürür.  

Read ( ) metodu: Dosyada içerisinde oluşturulan veri kanalından dosyadan sadece 

bir karekterlik veriyi okur ve int olarak tutar. Eğer okuma yapılamazsa ‐1 olarak 

döndürür. Read(char[] dizi, int indeks, int adet) şeklinde kullanıldığında, adet 

parametresi ile verilen sayı kadar karakteri, dizi [indeks] elemanından itibaren 

diziye yerleştirir. Yerleştirilen karakter sayısını döndürür. 

ReadToEnd( ) metodu: Dosya içerisinde oluşturulan veri kanalından dosyada 

bulunan tüm veriyi okur ve string olarak tutar. Eğer okuma yapılamazsa boşluk 

tutar. 

Peek ( ) metodu: veri kanalından bir karakter okur fakat karakteri girdiden 

çıkarmaz (Konum gösterici sanki okuma yapılmamış gibi ilgili karekterde bekler). 

Eğer okunacak karakter mevcut değilse ‐1 döndürür.  

 

Page 13: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    13 

Örnek program_5 

 

Şekil 8.10. FileStream sınıfına ait metotların kullanımını gösteren örnek program 

 

Şekil 8.11. C sürücüsündeki Aof. txt dosyasının içerisindeki metinin görüntüsü 

 

Şekil 8.12. Örnek program_5’in ekran görüntüsü 

StreamWriter sınıfı: StreamWriter sınıfı ile dosyalara text tabanlı veriler 

yazılır. Bu durum Şekil 8.13 ve 8.14 ve 8.15’de program _6‘da gösterilmektedir. 

Bir StreamWriter nesnesi aşağıda gösterildiği oluşturulabilir: 

 

Page 14: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    14 

string adres = @"C:\Aof.txt"; FileStream deneme= new FileStream(adres, FileMode.Open); StreamWriter okumaNesnesi1 = new StreamWriter(deneme); 

StreamReader sınıfında olduğu gibi StreamWriter sınıfında da Close( ) 

metoduyla StreamWriter nesnesine ilişkin kullanılan kaynaklar iade edilmelidir. 

StreamWriter sınıfının önemli metotları: 

Close(): Açılan dosyadaki veri kanalını kapatır.  

Write ( ) metodu: Dosya içerisine, oluşturulan veri kanalından her türlü yazının 

eklenmesini sağlar. Yazının sonuna herhangi bir sonlandırıcı karakter koymaz. Bu 

sebeple yeni yazılan karekterler yan yana yerleşir. 

WriteLine ( ) metodu: Write metoduyla aynı işi yapar. Fakat yeni eklenen yazıyı bir 

satır aşağıdan başlayarak ekler. 

Flush ( ) metodu:  Tampondaki bilgilerin dosyaya yazdırılmasını sağlayarak 

dosyanın güncellenmesini sağlar. 

Örnek program_6 

 

Şekil 8.13. StreamWriter sınıfına ait metotların kullanımını gösteren örnek program 

Page 15: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    15 

 

Şekil 8.14. C sürücüsündeki Aof.txt dosyasının içerisindeki metnin ilk görüntüsü 

 

Şekil 8.15. Örnek program_6’nin ekran görüntüsü 

 

Şekil 8.16. C sürücüsündeki Aof.txt dosyasının içerisindeki metnin son görüntüsü 

 

 

 

Page 16: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    16 

 

 

Özet

•Programlama dilleri içerisinde yer alan girdi veya çıktı işlemlerine I/O işlemleri denir ve bu terim İngilizce Input/Output'un kısaltılması sonucu elde edilir.

•Dosyaya bilgi kaydetmek, okumak,ekrana ya da yazıcıya bilgi yazdırmak gibi işlemler birer I/O işlemlerdir. 

•Visual C# dilinde de I/O sistemi ile ilgili tüm sınıflar System.IO isim alanı altında yer alır. Bu yüzden program kodunun en başına using System.IO; kodunun yazılması gerekir.

•Klasör işlemleri, System. IO isim alanındaki Directory ve DirectoryInfo sınıflarıyla yapılmaktadır. 

•Directory sınıfı statik yapıya sahiptir. Türetilmeden direkt sınıf isminin verilmesiyle kullanılabilir. Şu metotlara sahiptir; CreateDirectory (),Exists (), Move (), Delete (), GetCurrentDirectory (), SetCurrentDirectory (), GetDirectories () , GetDirectoryRoot (), GetCreationTime () , GetLastAccessTime (), GetLastWriteTime() .

•DirectoryInfo sınıfı dinamik yapıya sahiptir. Yeni bir sınıf nesnesinin türetilmesi sonrasında türetilen nesne  kullanılabilir.Kullanımı şekli farklı olsa da directory sınıfının yanında ilave olarak şu metotlara da sahiptir; Create (), CreateSubdirectory (), Attributes (), FullName,Name (), Extention (), MoveTo (), Root (), Parent (), MoveTo (). 

•Dosya işlemleri, System. IO isim alanındaki File ve FileInfo sınıflarıyla yapılmaktadır. File sınıfındaki birçok metot Directory ve DirectoryInfo sınıfında da vardır fakat tek farkları aynı görevleri dosyalar içinde yerine getirmeleridir.

•File sınıfı statik yapıya sahip olup FileInfo dinamik yapıya sahiptir.Klasör sınıfına ait metotların çoğu bu sınıf için de geçerlidir. 

•Dosyalar üzerinde okuma veya yazma işlemleri yapabilmek için, System. IO isim alanında bir çok sınıf olmasına rağmen FileStream, StreamReader ve StreamWriter olmak üzere  genelde bu sınıflarından yararlanılır.

•Bir dosya üzerinde okuma ve yazma işlemi için öncelikle onu açmak gereklidir. Dosyanın açılması sırasında FileStream sınıfı, dosyayı okurken StreamReader ve dosyaya yazmak içinse StreamWriter sınıfları kullanılır. Açılan her dosya üzerinde yapılan işlem bitirildiğinde mutlaka kapatılmalıdır. Dosyayı kapatmak için Stream sınıfının parametresiz Close( )  fonksiyonu kullanılır.

•StreamReader sınıfı ile dosyalardan text tabanlı veriler okunabilir. Şu metotlara sahiptir: Close(), ReadLine( ), Read ( ), ReadToEnd( ), Peek ( ) 

•StreamWriter sınıfı ile dosyalara text tabanlı veriler yazılır.Şu metadlara sahiptir:  Close(), Write ( ), WriteLine ( ), Flush ( )

Page 17: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    17 

DEĞERLENDİRME SORULARI 

1. C# dilinde, klasör ve dosya sınıfları hangi isim alanından türetilmiştir? 

a) System.Array 

b) System.Data 

c) System.IO 

d) System.Text 

e) System.Drawing 

 

2. Aşağıdakilerden  hangisi  DirectoryInfo  sınıfından  bir  nesne  üretmek  amacıyla 

kullanılabilen bir deyimdir? 

a) break 

b) new 

c) create 

d) type 

e) throw 

 

3. Bir disk üzerinde klasör oluşturmak için aşağıdaki metotlardan hangisi kullanılır?  

a) GetCreationTime() 

b) GetDirectories() 

c) GetLastAccessTime() 

d) Create() 

e) SetCreationTime() 

 

4. Bir disk üzerinde oluşturulmak  istenen klasörün olup olmadığını  kontrol eden 

metot aşağıdakilerden hangisidir? 

a) Delete() 

b) Exists() 

c) Move() 

d) Copy() 

e) Create() 

 

5. Aşağıdaki sınıflardan hangisi dosya ve klasör işlemlerinde kullanılmaz? 

a) Directory 

b) File 

c) StreamWriter 

d) StreamReader 

e) Path 

 

Değerlendirme sorularını 

sistemde ilgili ünite 

başlığı altında yer alan 

“bölüm sonu testi” 

bölümünde etkileşimli 

olarak cevaplayabilirsiniz. 

Page 18: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    18 

6. Bir dosya üzerinde okuma ve yazma  işlemi  için öncelikle onu açmak gereklidir. 

Dosyanın açılması sırasında genelde ………….. Sınıfı kullanılır. 

 

Cümlede boş bırakılan yere aşağıdakilerden hangisi getirilmelidir? 

a) FileStream 

b) StreamReader 

c) StreamWriter 

d) DirectoryInfo 

e) Path 

  

7. Aşağıdakilerden hangisi SteamReader sınıfının bir metodu değildir? 

a) ReadLine() 

b) Peek() 

c) ReadToEnd() 

d) Read() 

e) Flush() 

 

8. Aşağıdakilerden  hangisi  FileStream  sınıfında  yer  alan  parametrelerden  biri 

değildir? 

a) @”c:\test.txt” 

b) FileMode.OpenOrCreate 

c) FileAccess.Write 

d) FileAccess.Read 

e) FileMode.WriteLine 

 

9. C#  ‘ta  dosya  ve  klasörlere  bir  adres  bilgisi  verilirken  hangi  veri  türü  tercih 

edilmelidir?  

a) int 

b) byte 

c) string 

d) char 

e) long 

 

 

 

 

 

 

 

Page 19: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    19 

10.  ‐‐‐‐ using System;  using System.IO;  class soru10 {  static void Main()  {  String yol=@"c:\";  String[] bul = Directory. GetDirectories(yol);  foreach (string bul2 in bul)  {  Console. WriteLine(bul2.ToString());  }}}  ‐‐‐‐‐ 

Aşağıdakilerden  hangisi  kodları  verilen  programın  çalışmasını  doğru  olarak 

açıklar?  

a) Sürücüsündeki bütün dosyaları ekrana tek satırda listeler.  

b) Sürücüsündeki ismi c ile başlayan dosyaları ekranda alt alta listeler. 

c) Sürücüsündeki ismi c ile başlayan klasörleri ekranda tek satırda listeler. 

d) Sürücüsündeki bütün dizinleri ekranda alt alta listeler.  

e) Sürücüsündeki bütün dosyaları ekranda alt alta listeler. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cevap Anahtarı: 

1.C,2.B,3.D,4.B,5.E,6.A,7.E,8.E,9.D,10.D 

Page 20: DOSYA VE İŞ İ - WordPress.com...alan Directory, DirectoryInfo, File, FileInfo, StreamReader ve SteamWriter gibi en yaygın kullanılan sınıflar incelenecek ve bu sınıflarla

Dosya ve Klasör işlemleri 

Atatürk Üniversitesi Açıköğretim Fakültesi    20 

YARARLANILAN KAYNAKLAR VE BAŞVURULABİLECEK 

DİĞER KAYNAKLAR 

ALGAN, Sefer, (2010), Her Yönüyle C#, İstanbul: Pusula Yayıncılık, İstanbul. 

AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul. 

CLARK, Dan, (2013), Your visual blueprint for building.NET application, 2nd Edition, 

Hungry Minds, New York. 

SCHILDT, Herbert, (2002), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, Alfa 

Basım Yayım Dağıtım, İstanbul. 

SHARP, John, (2002), Microsoft Visual C#.NET, çev. Mert Derman,  Arkadaş Yayınevi,  

Ankara.  

YANIK, Memik, (2004), Microsoft Visual c#.NET, 1.Baskı, Seçkin Yayıncılık, Ankara.