Aracılığıyla paylaş


İzlenecek yol: .NET Framework Yöntemlerini Kullanarak Dosyaları Düzenleme (Visual Basic)

Bu kılavuzda sınıfını kullanarak StreamReader bir dosyanın nasıl açıldığı ve okunduğu, bir dosyaya erişilip erişilmediğinin nasıl denetlendiğini, sınıfın StreamReader bir örneğiyle okunan bir dosya içinde bir dizenin nasıl arandığını ve sınıfını kullanarak StreamWriter bir dosyaya nasıl yazıldığı gösterilmektedir.

Uyarı

Bilgisayarınız, aşağıdaki yönergelerde bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE'yi Kişiselleştirme.

Uygulamayı Oluşturma

Visual Studio'yu başlatın ve kullanıcının belirlenen dosyaya yazmak için kullanabileceği bir form oluşturarak projeyi başlatın.

Projeyi oluşturmak için

  1. Dosya menüsünde Yeni Proje'yi seçin.

  2. Yeni Proje bölmesinde Windows Uygulaması'na tıklayın.

  3. Ad kutusuna yazın MyDiary ve Tamam'a tıklayın.

    Visual Studio projeyi Çözüm Gezgini'ne ekler ve Windows Forms Tasarımcısı açılır.

  4. Aşağıdaki tablodaki denetimleri forma ekleyin ve özellikleri için karşılık gelen değerleri ayarlayın.

Nesne Özellikleri Değer
Button İsim

Metin
Submit

Başvuru Gönder
Button İsim

Metin
Clear

Girdiyi Temizle
TextBox İsim

Metin

Çok Satırlı
Entry

Lütfen bir şey girin.

False

Dosyaya Yazma

Uygulama aracılığıyla bir dosyaya yazma özelliğini eklemek için sınıfını StreamWriter kullanın. StreamWriter belirli bir kodlamadaki karakter çıkışı için, sınıfı ise Stream bayt girişi ve çıkışı için tasarlanmıştır. Standart bir metin dosyasına bilgi satırları yazmak için kullanın StreamWriter . sınıfı hakkında StreamWriter daha fazla bilgi için bkz StreamWriter. .

Yazma işlevi eklemek için

  1. Görünüm menüsünde Kod'u seçerek Kod Düzenleyicisi'ni açın.

  2. Uygulama System.IO ad alanına başvurduğundan, Public Class Form1 ile başlayan form sınıfı bildiriminden önce ve kodunuzun en başına aşağıdaki deyimleri ekleyin.

    Imports System.IO
    

    Dosyaya yazmadan önce bir sınıfın örneğini StreamWriter oluşturmanız gerekir.

  3. Görünüm menüsünde Tasarımcı'yı seçerek Windows Forms Tasarımcısı'na dönün. Düğmeye Submit çift tıklayarak düğme için bir Click olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin.

    Dim fw As StreamWriter
    

Uyarı

Visual Studio Tümleşik Geliştirme Ortamı (IDE), Kod Düzenleyicisi'ne döner ve ekleme noktasını, kodu eklemeniz gereken olay işleyicisinin içinde konumlandıracaktır.

  1. Dosyaya yazmak için Write sınıfının StreamWriter yöntemini kullanın. Aşağıdaki kodu doğrudan arkasına Dim fw As StreamWriterekleyin. Dosya bulunamazsa bir hata oluşturulacağından endişelenmeniz gerekmez, çünkü eğer zaten yoksa oluşturulur.

    Dim ReadString As String
    Try
        'Pass the file path and name to the StreamWriter constructor.
        'Indicate that Append is True, so file will not be overwritten.
        fw = New StreamWriter("C:\MyDiary.txt", True)
        ReadString = Entry.Text
        fw.WriteLine(ReadString)
    Finally
        'Close the file.
        fw.Close()
    End Try
    
  2. Aşağıdaki kodu doğrudan arkasına Dim ReadString As Stringekleyerek kullanıcının boş bir girdi gönderemediğinden emin olun.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Bu bir günlük olduğundan, kullanıcı her girişe bir tarih atamak isteyecektir. Değişkeni fw = New StreamWriter("C:\MyDiary.txt", True) geçerli tarihe ayarlamak için aşağıdaki kodu Today sonra ekleyin.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Son olarak, TextBox öğesini temizlemek için kod ekleyin. Clear düğmesinin Click olayına aşağıdaki kodu ekleyin.

    Entry.Text = ""
    

Günlüğe Görüntü Özellikleri Ekleme

Bu bölümde, içinde en son girdiyi DisplayEntryTextBoxgörüntüleyen bir özellik ekleyebilirsiniz. Ayrıca, çeşitli girişleri görüntüleyen ve kullanıcının bir girdi seçerek ComboBoxDisplayEntry'de görüntülemesini sağlayan bir TextBox ekleyebilirsiniz. StreamReader sınıfının bir örneği MyDiary.txt'den okur. sınıfı gibi StreamWriter , StreamReader metin dosyalarıyla kullanılmak üzere tasarlanmıştır.

İzlenecek kılavuzun bu bölümü için, aşağıdaki tabloda yer alan denetimleri forma ekleyin ve özellikleri için karşılık gelen değerleri ayarlayın.

Yönetim Özellikler Değerler
TextBox İsim

Görünür

Boyut

Çok Satırlı
DisplayEntry

False

120,60

True
Button İsim

Metin
Display

Görüntüleme
Button İsim

Metin
GetEntries

Verileri Getir
ComboBox İsim

Metin

Etkinleştirildi
PickEntries

Kayıt Seçin

False

Kombinasyon kutusunu doldurmak için

  1. PickEntries ComboBox, kullanıcının her girdiyi gönderdiği tarihleri görüntülemek için kullanılır, böylece kullanıcı belirli bir tarihten bir girdi seçebilir. Click düğmesine bir GetEntries olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin.

    Dim fr As StreamReader = Nothing
    Dim FileString As String
    FileString = ""
    Try
        fr = New System.IO.StreamReader("C:\MyDiary.txt")
        PickEntries.Items.Clear()
        PickEntries.Enabled = True
        Do
            FileString = fr.ReadLine
            If IsDate(FileString) Then
                PickEntries.Items.Add(FileString)
            End If
        Loop Until (FileString Is Nothing)
    Finally
        If fr IsNot Nothing Then
            fr.Close()
        End If
    End Try
    PickEntries.Enabled = True
    
  2. Kodunuzu test etmek için F5 tuşuna basarak uygulamayı derleyin ve ardından Girişleri Al'a tıklayın. Giriş tarihlerini görüntülemek için içindeki ComboBox açılan oka tıklayın.

Tek tek girdileri seçmek ve görüntülemek için

  1. Düğme için Click bir Display olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin.

    Dim fr As StreamReader
    Dim ReadString As String
    'Make sure ReadString begins empty.
    ReadString = ""
    Dim FileString As String
    fr = New StreamReader("C:\MyDiary.txt")
    'If no entry has been selected, show the whole file.
    If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then
        Do
            'Read a line from the file into FileString.
            FileString = fr.ReadLine
            'add it to ReadString
            ReadString = ReadString & ControlChars.CrLf & FileString
        Loop Until (FileString = Nothing)
    Else
        'An entry has been selected, find the line that matches.
        Do
    
            FileString = fr.ReadLine
        Loop Until FileString = CStr(PickEntries.SelectedItem)
        FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf
        ReadString = FileString & fr.ReadLine
    
        'Read from the file until EOF or another Date is found.
        Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine)))
            ReadString = ReadString & fr.ReadLine
        Loop
    End If
    fr.Close()
    DisplayEntry.Visible = True
    DisplayEntry.Text = ReadString
    
  2. Kodunuzu test etmek için F5 tuşuna basarak uygulamayı derleyin ve bir girdi gönderin. Girdileri Al'a tıklayın, ComboBoxöğeden bir girdi seçin ve ardından Görüntüle'ye tıklayın. Seçili girdinin içeriği içinde DisplayEntryTextBoxgörünür.

Kullanıcıların Girdileri Silmesini veya Değiştirmesini Etkinleştirme

Son olarak, DeleteEntry ve EditEntry düğmelerini kullanarak kullanıcıların bir girişi silmesine veya değiştirmesine olanak tanıyan ek işlevler ekleyebilirsiniz. Bir giriş görüntülenmediği sürece her iki düğme de devre dışı kalır.

Aşağıdaki tablodaki denetimleri forma ekleyin ve özellikleri için karşılık gelen değerleri ayarlayın.

Yönetim Özellikler Değerler
Button İsim

Metin

Etkinleştirildi
DeleteEntry

Girdiyi Sil

False
Button İsim

Metin

Etkinleştirildi
EditEntry

Girdiyi Düzenle

False
Button İsim

Metin

Etkinleştirildi
SubmitEdit

Düzenlemeyi Gönder

False

Girdilerin silinmesini ve değiştirilmesini etkinleştirmek için

  1. Display düğmesinin Click olayından sonra, DisplayEntry.Text = ReadString sonrasında aşağıdaki kodu ekleyin.

    DeleteEntry.enabled = True
    
  2. Düğme için Click bir DeleteEntry olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin.

    Dim fr As StreamReader
    Dim ReadString As String
    Dim WriteString As String
    Dim ConfirmDelete As MsgBoxResult
    fr = New StreamReader("C:\MyDiary.txt")
    ReadString = fr.ReadLine
    ' Read through the textfile
    Do Until (fr.Peek < 0)
        ReadString = ReadString & vbCrLf & fr.ReadLine
    Loop
    WriteString = Replace(ReadString, DisplayEntry.Text, "")
    fr.Close()
    ' Check to make sure the user wishes to delete the entry
    ConfirmDelete = MsgBox("Do you really wish to delete this entry?",
      MsgBoxStyle.OKCancel)
    If ConfirmDelete = MsgBoxResult.OK Then
        File.Delete("C:\MyDiary.txt")
        Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt")
        fw.WriteLine(WriteString)
        fw.Close()
        ' Reset controls on the form
        DisplayEntry.Text = ""
        PickEntries.Text = ""
        PickEntries.Items.Clear()
        PickEntries.Enabled = False
        DeleteEntry.Enabled = False
    End If
    
  3. Kullanıcı bir girdi görüntülediğinde düğme EditEntry etkinleştirilir. Click sonra Display düğmesinin DisplayEntry.Text = ReadString olayına aşağıdaki kodu ekleyin.

    EditEntry.Enabled = True
    
  4. Düğme için Click bir EditEntry olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Düğme için Click bir SubmitEdit olay işleyicisi oluşturun ve aşağıdaki kodu ekleyin

    Dim fr As StreamReader
    Dim ReadString As String
    Dim WriteString As String
    If Entry.Text = "" Then
        MsgBox("Use Delete to Delete an Entry")
        Return
    End If
    fr = New StreamReader("C:\MyDiary.txt")
    ReadString = fr.ReadLine
    Do Until (fr.Peek < 0)
        ReadString = ReadString & vbCrLf & fr.ReadLine
    Loop
    WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text)
    fr.Close()
    File.Delete("C:\MyDiary.txt")
    Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt")
    fw.WriteLine(WriteString)
    fw.Close()
    DisplayEntry.Text = Entry.Text
    Entry.Text = ""
    EditEntry.Enabled = False
    SubmitEdit.Enabled = False
    

Kodunuzu test etmek için F5 tuşuna basarak uygulamayı derleyin. "Girdileri Al"'a tıklayın, bir "girdi" seçin ve ardından "Görüntüle"'ye tıklayın. girdisi içinde DisplayEntryTextBoxgörünür. Girdiyi Düzenle üzerine tıklayın. girdisi içinde EntryTextBoxgörünür. içindeki girdiyi düzenleyin ve EntryTextBox tıklayın. MyDiary.txt Düzeltmenizi onaylamak için dosyayı açın. Şimdi bir girdi seçin ve Girdiyi Sil'e tıklayın. MessageBox İstek onayı geldiğinde Tamam'a tıklayın. Silme işlemini onaylamak için uygulamayı kapatın ve açın MyDiary.txt .

Ayrıca bakınız