Mesela bir kurgumuz olsa, programimizin bulundugu dizinde bir klasörumuz olsa, oradada program hakkinda bilgiler içeren text dosyalarimiz olsa. Bize bu text dosyalarimizin isimleri gerekli olsa. ' C:\Users\Bukalemun\Documents\Visual Studio 2015\Projects\For Döngüsü String Islemleri\For Döngüsü String Islemleri\bin\Debug\TextDosya\6.11.2018.txt ' kisminin sadece 6.11.2018.txt kismini almak istesek bunu nasil yapariz acaba ? Simdi Directory.GetFiles ile belirtilen klasör altindaki dosya isimlerini bir diziye aktariz. Buradaki adres yollari yukarida uzun adresi verir, ama bize sadece dosya ismi ve uzantisi gerekli. Buradaki izleyecegimiz yol, iç içe for kullanaraken sondaki \ karakterinden sonraki kismi çekmemiz gerek. Bu bir yöntem olabilir ayrica file info sinifi kullanilarak iki satir kod yardimiylada çekebiliriz.
Toplamda 148 karakter bulunmakta. Kodlarimiza bakacak olursak;
Imports System.IO
Public Class Form1
Dim DosyaYolu As New ArrayList
Dim Yol As String = Directory.GetCurrentDirectory() & "\" & "TextDosya" & "\"
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Name As String = Nothing
DosyaYolu.AddRange(Directory.GetFiles(Yol))
txtadres.Text = DosyaYolu(0)
LblAdresU.Text = txtadres.Text.Length
End Sub
Private Sub BtnDosyaIsmi_Click(sender As Object, e As EventArgs) Handles BtnDosyaIsmi.Click
Dim a As Byte = 0
For i = 0 To DosyaYolu.Count - 1
Name = DosyaYolu(i)
For j = 0 To Name.Length - 1
If Name(j) = "\" Then
a = j
End If
Next
lbldosya.Text = Mid(DosyaYolu(i), (a + 2), DosyaYolu(i).Length - (a + 1))
'a = 0
Next
lbla.Text = a
lbldosyaiu.Text = lbldosya.Text.Length
lblsonuc1.Text = txtadres.Text.Length - a
End Sub
End Class
Burada dikkat edilmesi gereken nokta asagidaki resimde a degiskeni diye belirttigim degisken for döngümüzde 1. for döngüsü ile adres yol ismimizi aliyoruz. sonrasinda içteki for döngüsü ile aldigimiz adres isminin her karakteri dolasiyoruz. ' \ ' karakterini gördügünde kaçinci karakter oldugunu anlamimiz için j degiskeni degerini a; ya aktariyoruz. Aslinda her '\' karakterini gördügünde ( Toplamda 10 tane var ) kaçinci karakter oldugunu a ya aktariyor ama bize en sonraki gerekli oldugu için zaten, en son degeri a;ya aktariyor ve bizde bize gerekini almis oluyoruz. Sonrasinda Mid string fonksiyonunu kullanarak;
Mid : Bir metnin içerisinde baslangictan belirtilen uzunluga kadar olan karakteri verir. Geriye string türünden bir deger döndürür.
Mid( string deger, baslangiç, uzunluk)
Yukaridaki ( a + 2 ) ile ( a + 1 ) normalde ( a + 1 ) ve ( a ) seklinde olmaliydi. Yanliz for döngüsünü 0 dan baslattigimiz için bir fazlasini ekleyerek islem yapiyoruz.
File info sinifini kullanarak ise çekmek istersek;
Dim fInfo As FileInfo = New FileInfo(DosyaYolu(0))
lbldosya.Text = fInfo.Name.ToString()
Fileinfo sinifi yardimiylada isimleri çekebiliriz.
Uygulama dosyasini buradan indirebilirsiniz.