VB.NET'te karşılaştırmalı dosya silme nasıl oluyor?

Bu konuyu okuyanlar

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
İstediğim bir klasörün içinde çok sayıda dosya var birde database'de bir sütunda birçok dosya adı var dizindeki dosyaların her birini database'deki dosya adlarıyla karşılaştırıp eğer burda adı yoksa silinmesini istiyorum

Kod:
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim da = New OleDbDataAdapter
        Dim cmd As New OleDbCommand
        Dim dr As OleDbDataReader
        If (cn.State = ConnectionState.Closed) Then cn.Open()
        cmd = New OleDbCommand("Select resim from Kisiler ", cn)
        dr = cmd.ExecuteReader()

        Dim dizin As New IO.DirectoryInfo(Application.StartupPath & "\Resimler")
        If dizin.Exists = True Then
            Dim dizindekidosyalar As IO.FileInfo() = dizin.GetFiles("*.jpg")
            Dim dosyaadı As IO.FileInfo

            '******************************************************************
            For Each dosyaadı In dizindekidosyalar
                '======================================
                While dr.Read

                    If dosyaadı.ToString = dr(0).ToString Then
                        MsgBox(dosyaadı.ToString & " Bu dosya Var" & dr(0).ToString)
                    Else
                        MsgBox(dosyaadı.ToString & "  Bu Dosya Yok  " & dr(0).ToString)
                        ' File.Delete(Application.StartupPath & "\Resimler\" & dosyaadı.ToString)
                    End If

                End While
                '======================================
            Next
            '******************************************************************

            cn.Close()
        End If
    End Sub

.MDB DOSYASINDA ADI BULUNMAYAN DOSYALARIN KLASÖRÜN İÇİNDEN SİLİMESİNİ İSTİYORUM
kodu nasıl düzeltmem gerekli
 

craftingMaterial

Müdavim
Katılım
31 Aralık 2007
Mesajlar
17,485
Reaksiyon puanı
188
Puanları
63
Kodu düzeltmekle uğraşamam ama ben olsam şöyle bir mantıkla olaya yaklaşırdım, ilk önce klasördeki dosyaların adlarını bir listeye alırdım, daha sonra MDB içinden kayıtları okuyup olanları listeden çıkartırdım, ardından da listede kalan dosyaları sildirirdim :)
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Demesi kolayda denklemi kuramıyorum istediğin şey aşağıda dosyalistesi 'ne dosya adlarını doldurdum
mdbisimlistesi 'nede MDB dosyasında yazan dosya adlarını doldurdum şimdi elde iki tane liste var
Kod:
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim da = New OleDbDataAdapter
        Dim cmd As New OleDbCommand
        Dim dr As OleDbDataReader
        If (cn.State = ConnectionState.Closed) Then cn.Open()
        cmd = New OleDbCommand("Select resim from Kisiler ", cn)
        dr = cmd.ExecuteReader()

        Dim dizin As New IO.DirectoryInfo(Application.StartupPath & "\Resimler")
        If dizin.Exists = True Then
            Dim dizindekidosyalar As IO.FileInfo() = dizin.GetFiles("*.jpg")
            Dim dosyaadı As IO.FileInfo
            '******************************************************************
            '*************** İLGİLENECEĞİNİZ KODLAR AŞAĞIDAKİLERDİR *****************
            '******************** YUKARIDAKİLERE BAKMAYIN ************************
            '******************************************************************

            ' BURDA BİLGİLERİ LİSTEYE DOLDURDUM
            Dim dosyalistesi As New List(Of String)
            Dim mdbisimlistesi As New List(Of String)

            '******************************************************************
            For Each dosyaadı In dizindekidosyalar
                dosyalistesi.Add(dosyaadı.ToString)
            Next
            '******************************************************************
            While dr.Read
                mdbisimlistesi.Add(dr(0))
            End While
            '******************************************************************
            cn.Close()
        End If
    End Sub
 

craftingMaterial

Müdavim
Katılım
31 Aralık 2007
Mesajlar
17,485
Reaksiyon puanı
188
Puanları
63
tamam işte
dosyalistesi'ndeki her kaydı tek tek​
mdbisimlistesi'nin verileri ile tara olanları kaldır. ta ki tarama sırasında hiç bir veri çıkarılmayıp döngü sonlanana kadar. daha sonra da dosya listesindeki verileri diskten sildir...​
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Böyle birşey herhalde anlatmaya çalıştığınız
Kod:
 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim da = New OleDbDataAdapter
        Dim cmd As New OleDbCommand
        Dim dr As OleDbDataReader
        Dim cn As OleDb.OleDbConnection = New  OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data  Source=C:\Temp\Database1.accdb")
        Dim Flag As Boolean = False
        If (cn.State = ConnectionState.Closed) Then cn.Open()
        cmd = New OleDbCommand("Select resim from Kisiler ", cn)
        dr = cmd.ExecuteReader()
        Dim dizin As New IO.DirectoryInfo("C:\Temp")
        If dizin.Exists = True Then
            Dim dizindekidosyalar As IO.FileInfo() = dizin.GetFiles("*.txt")
            Dim dosyaadı As IO.FileInfo

            '******************************************************************
            Dim FindData As String = ""
            For Each dosyaadı In dizindekidosyalar
                '======================================
                While dr.Read
                    FindData = dr.GetString(0).ToString
                    Flag = False
                    For Each File As IO.FileInfo In dizindekidosyalar
                        If LCase(File.FullName) = LCase(FindData) Then
                            Flag = True
                            Exit For
                        End If
                    Next
                    If Flag = True Then
                        MsgBox("Dosya bulundu...")
                         'İşlem gerçekleştir
                    Else
                        MsgBox("Dosya Bulunamadı")
                        'işlem gerçekleştir
                    End If
                End While
                '======================================
            Next
            '******************************************************************

            cn.Close()
        End If
    End Sub
 

Son mesajlar

Üst