FileExists returnt mir fälschlicherweise False

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Yanbel.

    FileExists returnt mir fälschlicherweise False

    Hey,

    ich habe ein Problem mit der FileExists Funktion.

    Ich habe einen Ordner mit 700+ JPGs und eine Textbox. In der Textbox ist pro Zeile ein Dateiname.
    Ich möchte nun prüfen, welche der Dateien aus der Textbox NICHT im Ordner vorhanden sind.
    Bei wenigen Dateien klappt das ganze, bei den 700+ werden mir aber über 350 Dateien ausgegeben, obwohl die 100% vorhanden sind.
    Wo liegt der Fehler?..


    VB.NET-Quellcode

    1. Dim Counter As Integer = 0
    2. For Each Line As String In tbFileNames.Lines
    3. Counter = Counter + 1
    4. If (IO.File.Exists(tbFolder.Text & "\" & tbFileNames.Lines(Counter - 1).ToString & ".jpg")) = False Then
    5. tbNotExistingFiles.Text = tbNotExistingFiles.Text & vbNewLine & (tbFileNames.Lines(Counter - 1).ToString)
    6. Else
    7. End If
    8. Next


    tbNotExistingFiles sollte mir nur Dateien anzeigen, welche es auch wirklich nicht gibt..
    Habe IO.File.Exists und my.computer.filesystem.fileexists ausprobiert, falls das nicht die gleichen sein sollten. Immer bekomme ich über 300+ "fehlende" Dateien raus.
    Es sollten aber nur 7 sein.

    Vielen Dank..
    Gruß :)


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Moin xored,

    Ich denke das Problem liegt hier:

    VB.NET-Quellcode

    1. tbFileNames.Lines(Counter - 1).ToString


    Probiere hier stattdessen

    VB.NET-Quellcode

    1. Line.Replace(vbCrlf, String.Empty).Replace(vbNewLine, String.Empty).Trim


    Blöde Frage noch: Wieso verwendest du diesen Mist mit dem Counter in deiner For Each Schleife. Line gibt dir doch schon den Inhalt der Zeile zurück.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yanbel“ ()

    VB.NET-Quellcode

    1. Dim FilePath As String = String.Empty
    2. Dim FileName As String = String.Empty
    3. Dim FolderName As String = String.Empty
    4. If tbFolder.Text.EndsWith("\") Then
    5. FolderName = tbFolder.Text
    6. Else
    7. FolderName = String.Concat(tbFolder.Text, "\")
    8. End If
    9. For Each Line In tbFileNames.Lines
    10. FileName = Line.Replace(vbCrLf, String.Empty).Replace(vbNewLine, String.Empty).Trim
    11. FilePath = IO.Path.Combine(FolderName, FileName)
    12. If Not IO.File.Exists(FilePath) Then
    13. tbNotExistingFiles.Text = String.Concat(tbNotExistingFiles.Text, FileName, vbCrLf)
    14. End If
    15. Next


    Teste mal das hier ;) Sollte hinhauen


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.