Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    13

    [C#]ricerca ricorsiva ed output file testo

    Ciao a tutti.
    Ho creato un programma molto banale che stampa a video tutte le cartelle e le sottocartelle presenti in un percorso indicato.
    Quello che vorrei fare è però salvare in un file di testo tutti i percorsi delle cartelle e sottocartelle trovate
    Ecco il codice del nuovo programmino:

    codice:
    using System;
    using System.IO;
    
    class ricercafile
    {
    
    
        public static void Main(string[] args)
        {
            //ricavo il percorso in cui cominciare la ricerca delle directory
            Console.WriteLine("Inserisci il percorso di ricerca:");
            string input = Console.ReadLine();
    
            //ricavo il nome ed il percorso del file di testo
            Console.WriteLine("Inserisci il percorso per l'output:");
            string destination = Console.ReadLine();
    
            //creo l'oggetto sw della classe StreamWriter
            StreamWriter sw = new StreamWriter(destination);
    
            //richiamo la funzione che permette la ricerca
            DirSearch(input);
    
            //chiudo il file di testo
            sw.Close();
    
            //queste è la fine del programma
            Console.WriteLine("Il programma ha finito, premi invio per uscire");
            Console.ReadLine();
    
        }
    
       
    
    
        static public void DirSearch(string percorso)
        {
            foreach (string i in Directory.GetDirectories(percorso))
            {
                //scrivo il percorso delle directory all'interno del file di testo
                sw.WriteLine(i);
    
                //richiamo la funzione in cui mi trovo ora
                DirSearch(i);
            }
        }
    
     }
    Il problema è che quando compilo genera un errore di questo tipo: "The name 'sw' does not exist in the current context"
    L'errore è nella linea 29, cioè è relativo all'istruzione sw.WriteLine(i) presente nella funzione DirSearch.
    Io credo che l'errore è da imputare al fatto che non posso usare, all'interno di una funzione (o metodo), dei metodi di un oggetto che ho istanziato nel main.
    Ho fatto delle ricerche in internet ma non ho trovato molto.
    Potete darmi un aiuto?
    Non voglio la pappa pronta, è solo che il libro di c# che ho ordinato deve ancora arrivare

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    No il problema è che sw è un oggetto creato nel main, mentre il metodo che vuoi utilizzare non è in grado di vederlo perchè:

    1) Sw è locale al main e quindi "invisibile" ad altri metodi;
    2) Il metodo è statico e quindi istanziato prima della creazione di oggetti ecc.. e quindi oviamente almeno che sw non sia statico e globalle alla classe non sarà mai "visibile"..

    Consiglio quindi di passare sw come parametro al metodo (o funzione che sia) così da non avere + problemi..

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.