Makale Özeti

Selamlar, bundan sonra yazgelistir de de birlikte .NET üzerine konuşacağız. Bu topluluk içinde de olmaktan mutluyum. aspnedirde ve BYTEda .NET üzerine uzun süredir yazı yazıyorum. yazgelistir de de olmak çok keyifli.

Makale

Visual Basic.NET System.IO Kütüphanesini İnceliyoruz...

        Selamlar, bundan sonra yazgelistir de de birlikte .NET üzerine konuşacağız. Bu topluluk içinde de olmaktan mutluyum. aspnedirde ve BYTEda .NET üzerine uzun süredir yazı yazıyorum. yazgelistir de de olmak çok keyifli. Visual Basic.NET ile birlikte yapılabilecekler üzerinde durmak istiyorum. Bildiğiniz gibi artık Visual Basic Object Orianted bir dil. Eski Visual Basic programcılarının alışkanlıklarında değişiklik olacak tabikide. Bu yüzden hep birlikde araştırıp bilgi paylaşımı yapmamız gerekli. Özellikle de en çok yaptığımız işlemlerden bir taneside dosya ve klasör işlemleridir. Uygulamalarımızda dosyalar üzerinde birçok işlemler yapmaktayız. Log tutma, txt ler üzerinde bilgi saklama gibi. Visual Basic6 da FileSystemObject Objesini set ederek işlemlerimizi gerçekleştiriyorduk. Sonrada bu objenin CreateTextFile metodu ile dosya oluşturup, OpenTextFile metodu ile dosyaları açabiliyorduk. Ve diğer metotları ile birçok işlem gerçekleştirebiliyorduk. Artık VB Object Orianted bir yapı olduğu için bu işlemleri yapmak için visual Basic.NET in System.IO altındaki class larını kullanacağız. System.IO kütüphanesi ile birlikte sıkça kullandığımız dosya ve klasörler üzerindeki işlemleri gerçekleştirebiliriz. Bir yazıda bu class ların hepsinden bahsetmek mümkün olamaz tabikide. Bu yüzden başlangıç için bazı class ları inceleyeceğiz. Aslında özellikle BinaryReader, Stream class larını sonraki yazılarda incelemek istiyorum. Gerçektende class library inceleyin derim. Uygulamalarınızda kullanacağınız birçok nokta için hazır class lar var. Bunları önceden birçoğumuz kendimiz yazardık. Özellikle Visual Basic programcıları için daha zordu. Bence ilk önce class library i bir inceleyin, ardından uygulamaya geçin. Birçok şey hazır geliyor çünkü. Bu yazıda Visual Basic.NET ile dosya ve klasörler üzerinde yapılabilecekler, örnekler üzerinde duracağız.

.NET Framework Class Library
System.IO Hiyerarşi
System.Object

   System.Attribute

      System.ComponentModel.DescriptionAttribute

         System.IO.IODescriptionAttribute

   System.Delegate

      System.MulticastDelegate

         System.IO.ErrorEventHandler

         System.IO.FileSystemEventHandler

         System.IO.RenamedEventHandler

   System.EventArgs

      System.IO.ErrorEventArgs

      System.IO.FileSystemEventArgs

         System.IO.RenamedEventArgs

   System.Exception

      System.SystemException

         System.IO.InternalBufferOverflowException

         System.IO.IOException

            System.IO.DirectoryNotFoundException

            System.IO.EndOfStreamException

            System.IO.FileLoadException

            System.IO.FileNotFoundException

            System.IO.PathTooLongException

   System.IO.BinaryReader ---- System.IDisposable

   System.IO.BinaryWriter ---- System.IDisposable

   System.IO.Directory

   System.IO.File

   System.IO.Path

   System.MarshalByRefObject

      System.ComponentModel.Component

         System.IO.FileSystemWatcher ---- System.ComponentModel.ISupportInitialize

      System.IO.FileSystemInfo

         System.IO.DirectoryInfo

         System.IO.FileInfo

      System.IO.Stream

         System.IO.BufferedStream

         System.IO.FileStream

         System.IO.MemoryStream

      System.IO.TextReader

         System.IO.StreamReader

         System.IO.StringReader

      System.IO.TextWriter

         System.IO.StreamWriter

         System.IO.StringWriter

   System.ValueType

      System.Enum

         System.IO.FileAccess

         System.IO.FileAttributes

         System.IO.FileMode

         System.IO.FileShare

         System.IO.NotifyFilters

         System.IO.SeekOrigin

         System.IO.WatcherChangeTypes

      System.IO.WaitForChangedResult

System.IO.Directory class ının bazı metotlarını inceleyelim;
CreateDirectory
Belirtilen path de klasör oluşturur.
Directory.CreateDirectory("c:\deneme")
Delete
Belirtilen klasörü siler.
Directory.Delete("c:\deneme")
Exists
Belirtilen path de klasör olup – olmadığını gönderir.
If Directory.Exists("c:\deneme") Then
MsgBox("Klasör Var!")
Else
MsgBox("Klasör Yok!")
End If
GetCreationTime
Belirtilen klasörün oluşturulma tarihini gönderir.
MsgBox(Directory.GetCreationTime("c:\deneme"))
GetCurrentDirectory
Uygulamanın çalıştığı aktif path’i gönderir.
MsgBox(Directory.GetCurrentDirectory)
GetDirectories
Belirtilen path’deki klasör isimlerini listeler.
Bunun için lstListe isimli bir ListBox ‘ ımız olsun ve sonuçları ona aktarsın.

Dim klasor As String
Dim klasorler() As String
klasorler = Directory.GetDirectories("c:\ ")
For Each klasor In klasorler
   lstListe.Items.Add(klasor)
Next

GetFiles
Belirtilen path’deki dosya isimlerini gönderir.
Aynı ListBox ımıza dosya isimlerini listeleyelim.
   
Dim dosya As String
Dim dosyalar() As String
    dosyalar = Directory.GetFiles("c:\ ")
    For Each dosya In dosyalar
          lstListe.Items.Add(dosya)
    Next
GetFileSystemEntries
Belirtilen path’deki dosya ve klasör isimlerini listeler.

    Dim isim As String
    Dim isimler() As String
    isimler = Directory.GetFileSystemEntries("c:\ ")
    For Each isim In isimler
         lstListe.Items.Add(isim)
    Next

    Ayrıca belirtilen şartlara uygun liste içinde şart verebiliriz. Örneğin sadece A harfi ile başlayanlar listelensin dersek;

    Dim dosya_ismi As String
    Dim dosya_isimleri() As String
    dosya_isimleri = Directory.GetFileSystemEntries("c:\ ", "A*")
    For Each dosya_ismi In dosya_isimleri
          lstListe.Items.Add(dosya_ismi)
    Next
GetLastAccessTime
Belirtilen klasör ya da dosyanın son access tarihini gönderir.
    MsgBox(Directory.GetLastAccessTime("c:\deneme"))
    MsgBox(Directory.GetLastAccessTime("c:\deneme\deneme.txt"))
GetLastWriteTime
Belirtilen klasör ya da dosyanın son güncelleme tarihini gönderir.
    MsgBox(Directory.GetLastWriteTime("c:\deneme"))
    MsgBox(Directory.GetLastWriteTime("c:\deneme\deneme.txt"))
GetLogicalDrives
Bilgisayardaki sürücülerin listesini gönderir.
    Aynı ListBox’a sonuçları gösterelim.

    Dim suruculer() As String
    Dim surucu As String
    suruculer = Directory.GetLogicalDrives()
    For Each surucu In suruculer
           lstListe.Items.Add(surucu)
    Next
SetCreationTime
Belirtilen klasör ya da dosyanın oluşturulma tarihini değitirir.
    Directory.SetCreationTime("c:\deneme", "12.08.2002 10:10:12")
    Directory.SetCreationTime("c:\deneme\deneme.txt", "12.08.2002 10:10:12")
SetCurrentDirectory
Uygulamanın çalıştığı klasörü değiştir.
System.IO.File class ının bazı metotlarını inceleyelim.
Create
Belirtilen dosyayı oluşturur.
    File.Create("c:\deneme.txt")
Delete
Belirtilen dosyayı siler.
    File.Delete("c:\deneme.txt")
Exists
Belirtilen dosyanın var olup – olmadığını kontrol eder.
   
If File.Exists("c:\deneme") Then
        MsgBox("Dosya Var!")
Else
        MsgBox("Dosya Yok!")
End If
GetLastWriteTime
Belirtilen dosyanın son güncelleme tarihini gönderir.
MsgBox(File.GetLastWriteTime("c:\deneme"))
       Bir örnek ile bilgileri biraz pekiştirelim. System.IO.FileStream class ını kullanarak dosya içindeki bilgilere ulaşmaya çalışalım. Elimizde deneme.txt dosyası olsun ve bu dosya içindeki bilgileri satır satır okuyalım.

       If Not File.Exists("c:\deneme.txt") Then
            MsgBox("Dosya Mevcut Değil!", "c:\deneme.txt")
       End If

       Dim fsIn As New FileStream("c:\deneme.txt", FileMode.Open, FileAccess.Read, FileShare.Read)
       Dim sr As New StreamReader(fsIn)
       Dim satir As String
       While sr.Peek() > -1
             satir = sr.ReadLine()
             MsgBox(satir)
       End While
       sr.Close()

       İlk önce File class ımın Exists metodunu kullanarak “c:\deneme.txt” dosyasının var olup – olmadığını kontrol ediyorum. Ardından fsIn değişkenimi FileStream tipinde tanımlayıp, dosya adını veriyorum ve Read modunda dosyamı açıyorum.
       Sr değişkenimi StreamReader tipinde açmış olduğum dosya ile tanımlıyorum. Döngü içinde StreamReader’ın Peek metodunu kullanarak satır satır okumasını söylüyorum ve satir değişkenime StreamReader’ın ReadLine mtodunu kullanarak okuduğu satırı aktarıyorum. Ardından ekrana yazdırıyorum.

       Birde text dosya oluşturup içine bilgi atayalım. Bu işlem için yine FileStream class’ını kullanacağız. Yalnız bu sefer Write metotlarını kulanacağız.

        Dim fsIn As New FileStream("c:\deneme.txt", FileMode.Create, FileAccess.Write, FileShare.Write)
        Dim sr As New StreamWriter(fsIn)
             sr.WriteLine("Microsoft")
             sr.WriteLine("Yazgeliştir")
             sr.WriteLine("Visual Basic.NET")
       sr.Close()

       Bunun sonucunda deneme.txt içine belirttiğim değerler satır satır yazılacaktır.

       Yeliz Korkmaz
       yelizkorkmaz@turk.net