Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB.NET 2005] File search

    Gentilmente mi postereste un url dove posso trovare come:

    - Cercare un file in particolare sfogliando il mio intero computer (tipo un pippo.mp3 o pippo.exe etc.) e salvare il suo path.

    O provato a cercare sul web ma oggi son stato 4 ore senza trovare nulla.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    come per la ricerca all'interno di una cartella, ti crei una funzione ricorsiva da utilizzare per le varie cartelle.

    codice:
        Public Function FindFile(ByVal nomeFile As String) As String
            Dim strDrives() As String = Directory.GetLogicalDrives()
            Dim Directories As String()
            Dim iDirectory, filePath As String
            Dim driveDetails As DriveInfo
    
            For Each drive As String In strDrives
                driveDetails = New DriveInfo(drive)
                If driveDetails.DriveType.ToString = "Fixed" Then
                    Directories = Directory.GetDirectories(drive)
    
                    For Each iDirectory In Directories
                        filePath = SearchFile(iDirectory, nomeFile)
                        If filePath.Length > 0 Then Return filePath
                    Next
                End If
            Next
    
            Return String.Empty
        End Function
    
        Private Function SearchFile(ByVal Dir As String, ByVal nomeFile As String) As String
            Dim Directories As String()
            Dim iDirectory As String, filePath As String
    
            SearchFile = String.Empty
    
            Directories = Directory.GetDirectories(Dir)
            If File.Exists(Path.Combine(Dir, nomeFile)) Then Return Dir
    
            For Each iDirectory In Directories
                filePath = SearchFile(iDirectory, nomeFile)
                If filePath.Length > 0 Then Return filePath
            Next
        End Function
    Ans.

  3. #3
    Ans come sempre ti ringrazio per l'aiuto. O rivisto il codice del filesearch, è ottimo, unica pecca e che dato che il ciclo For Each directory non si ferma mai, finisce col trovare più di un file con lo stesso nome. Per interromperlo o provato ad utilizzare una message box che ti chiede se il percorso e corretto oppure no, solo che sembra infischiarsene il programma, continuando a cercarmi il file nel ciclo For Each..

    codice:
    Imports System.IO
    
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim nomefile As String = "WoW.exe"
            Dim strDrives() As String = Directory.GetLogicalDrives()
            Dim Directories As String()
            Dim iDirectory, filePath As String
            Dim driveDetails As DriveInfo
            For Each drive As String In strDrives
                driveDetails = New DriveInfo(drive)
                If driveDetails.DriveType.ToString = "Fixed" Then
                    Directories = Directory.GetDirectories(drive)
                    For Each iDirectory In Directories
                        filePath = SearchFile(iDirectory, nomefile)
                    Next
                End If
            Next
        End Sub
    
        Private Function SearchFile(ByVal Dir As String, ByVal nomeFile As String) As String
            Dim Directories As String()
            Dim iDirectory As String, filePath As String
            Dim risposta As MsgBoxResult
            SearchFile = String.Empty
            Directories = Directory.GetDirectories(Dir)
            For Each iDirectory In Directories
                filePath = SearchFile(iDirectory, nomeFile)
                If File.Exists(Path.Combine(Dir, nomeFile)) Then
                    risposta = MsgBox("Il percorso è corretto? " + (Dir + "\" + nomeFile), MsgBoxStyle.YesNo, "Controllo path del gioco....")
                    If risposta = MsgBoxResult.Yes Then
                        Exit For
                    Else
                    End If
                    TextBox1.Text = (Dir)
                End If
            Next
        End Function
    End Class

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    sei sicuro di aver ricopiato correttamente il codice,
    l'ho scritto veloce ma ho provato e funziona

    riguardalo, poichè mi sembra tu abbia saltato alcune parti di codice. Utilizza le funzioni così come sono prima di modifiche, devi solo passare il nome del file alla funzione Public.
    Ans.

  5. #5
    Si si di funzionare funziona... mi spiego meglio.

    Effettuo la ricerca e mi trova c:\backup\pippo.exe, ora a me non interessa, perchè magari cerco c:\giocoinstallato\pippo.exe

    Quello che devo fare e cercare, trovo il file? Chiedo all'utente se è quello giusto, non è giusto? Continuo la ricerca finche non lo trovo, quando lo trovo interrompo la ricerca.

    Il codice difatti l'avevo provato così come me lo avevi dato e di funzionare funziona, ma ne trova solo uno una volta che lo trova il tuo
    If File.Exists(Path.Combine(Dir, nomeFile)) Then
    blocca tutto. E se non è quello giusto? Ecco perchè o cercato di inserire un msgbox che ti chiede se è corretto o no.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    If File.Exists(Path.Combine(Dir, nomeFile)) Then Return Dir

    questa riga effettua il controllo se il nome del file esiste all'interno della cartella, ed è l'unica quindi ti basta modificarla in:

    If File.Exists(Path.Combine(Dir, nomeFile)) Then
    'chiedi conferma
    if risposta = MsgBoxResult.Yes then Return Dir
    End If
    Ans.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.