Ricerca file

di il
23 risposte

Ricerca file

Buona sera,
ho difficoltà a trovare il percorso di un file dato il nome e il tipo di file.
Io di solito uso:
Dim WorkingFolder2 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
 My.Computer.FileSystem.CopyFile(WorkingFolder2 & "\testFile.txt")
ma questo posso utilizzarlo solo quando so dove fare la ricerca.
Ma in questo caso, io non so dove posso trovare il file, essendo che può essere ovunque.
cosa posso usare?

23 Risposte

  • Re: Ricerca file

    Https://docs.microsoft.com/it-it/dotnet/api/system.io.directory.getfiles?view=netframework-4.8#System_IO_Directory_GetFiles_System_String_System_String_
  • Re: Ricerca file

    Se la ricerca deve essere estesa a tutto il disco e non è nota la posizione del file che stai cercando, io farei uso di al posto di GetFiles().

    EnumerateFiles() ti consente di scandire in "modalità lazy" i percorsi dei file man mano che vengono recuperati, conservando eventualmente quelli che soddisfano il tuo criterio di ricerca (oltre a quello indicato come parametro in searchPattern), mentre nel caso di GetFiles() dovresti attendere la restituzione di tutti i percorsi trovati, che costituiscono il risultato finale e nel caso di un disco voluminoso contenente molti file potresti anche finire con una OutOfMemoryException.

    Ciao!
  • Re: Ricerca file

    Questa e'""filosofia"":

    SE e' il codice che deve sapere dove e' il file, E' MEGLIO che sia SEMPRE nello stesso posto
    ALTRIMENTI
    il codiche chiede all'UTENTE dove e' il file
    ALTRIMENTI
    e' l'UTENTE che dice al codice dove e' il file.

    Cercarlo e' un po' (MOOOOOOLTO) rischioso perche' il codice NON SA distinguere tra due file con lo stesso nome/tipo (e che magari non centrano niente uno con l'altro)

    Ricorda che la legge di Murphy dice che se qualcosa puo' andare male, SICURAMENTE lo fara'!
    E due file con lo stesso nome ma in psizioni diverse, per quano tu possa giurare a TUTTI i santi che non capitera' MAI, stai pur cert che capitera'
  • Re: Ricerca file

    Grazie Mille a tutti delle Risposte date.
    Ho provato ad applicare i vari metodi/fuction, ma essendo che non li ho mai utilizzati, ho fatto fede agli esempio che mette a disposizione Microsoft negli esempi.
    Ma in tutti i casi, o inserisce lui il percorso dove cercare, oppure inserisce solo l'estensione, e crea una lista.
    Ma pultroppo non fa al caso mio, Io sono sicuro che in tutto il pc, c'è solo quel file all'interno del pc con quel nome,
    e ho bisogno di cercare quel file TXT all 'iterno del file per crearne una copia nello stesso percorso e modificarla.
    voi avreste un altro esempio diverso da quello che mette a disposizione microsoft?
    Grazie Mille
  • Re: Ricerca file

    Ma hai provato ad usare Directory.EnumerateFiles() come ti hanno suggerito ??

    Mostraci il codice che hai provato a realizzare
  • Re: Ricerca file

    Io ho provato cosi:
    
        Dim sourceDirectory As String = ""
            Dim archiveDirectory As String = "C:"
    
            Try
                Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "testFile.txt", SearchOption.AllDirectories)
    
                For Each currentFile As String In txtFiles
                    Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
                Next
            Catch e As Exception
                Console.WriteLine(e.Message)
            End Try
    
  • Re: Ricerca file

    Io sourceDirectory non metto niente, perche io non so dove cercare il file
  • Re: Ricerca file

    Vuoi dire che non sai neppure in quale disco è ?
  • Re: Ricerca file

    Disolito si, ma vorrei essere pronto dell'eventualità che non so neanche in quale disco si trovi.
  • Re: Ricerca file

    Fare una ricerca di un file in tutti i dischi del PC è una cosa assurda. Potrebbe anche metterci un'ora ... che senso ha??

    E' assolutamente la strada sbagliata. DEVI sapere dove sta il file, non arriva magicamente nel PC.
  • Re: Ricerca file

    Puoi avere l'elenco dei dischi del tuo pc utilizzando il metodo GetDrives della classe DriveInfo : https://docs.microsoft.com/it-it/dotnet/api/system.io.driveinfo.getdrives?view=netframework-4.8
  • Re: Ricerca file

    OK, allora ho capito che come minimo devo conoscere su quale disco effettuare la ricerca.
    Allora farò in modo di cercare sempre il mio file sul disco c:
    Il problema rimane che non so come effettuare la ricerca sul disco sapendo solo il nome del file,
    una volta bastava usare : ../ nomefile
    l'estensione per effettuare la ricerca, è obbligatoria?
  • Re: Ricerca file

    ors ha scritto:


    Il problema rimane che non so come effettuare la ricerca sul disco sapendo solo il nome del file
    Lo puoi fare tranquillamente con il codice che hai già scritto e che fa uso di EnumerateFiles().
    Devi solo fornire la directory di partenza (es. C:\) e un pattern di ricerca adeguato (es. nomefile.*).

    Detto questo, non riesco a capire quale utilità possa avere il tuo programma che deve copiare un file senza sapere nemmeno dove si trova e dovendoselo cercare ogni volta.

    Infine, non effettuare lo spostamento in concomitanza con il ciclo sui file che hai trovato: quando hai trovato il percorso del file che ti interessa nel ciclo, e sei sicuro che si tratti di quello giusto, salva il nome in una variabile ed esci dal ciclo, poi nel codice che segue utilizzi il percorso individuato per farne ciò che vuoi.

    Il ciclo va comunque interrotto perché rischi di includere anche la directory in cui vai a spostare il file nella ricerca, trovandolo una seconda volta, e ammesso che il criterio da te specificato individui un solo file e non altri file, magari con nome analogo o simile, che in realtà non c'entrano nulla.

    Insomma, concludendo mi pare di capire che - se non si tratta di un programma del tutto sperimentale o di un giocattolo - ci sia un approccio molto pericoloso e farraginoso alla risoluzione del problema, per cui valuterei (se possibile) eventuali alternative, ad esempio spiegando anche perché devi mettere in piedi una simile procedura.

    Ciao!
  • Re: Ricerca file

    ors ha scritto:


    Allora farò in modo di cercare sempre il mio file sul disco c:
    Fai in modo di scrivere il file in una specifica cartella del disco C: e hai risolto.

    Mi sembra che stai complicando inutilmente una situazione molto semplice e che nessuno affronterebbe in questo modo.
Devi accedere o registrarti per scrivere nel forum
23 risposte