Domanda

Sto cercando di eliminare una directory che contiene file XML da un computer remoto. Il mio codice viene compilato ed eseguito correttamente, ma quando vado a ottenere un elenco di file XML nel percorso specificato, non restituisce nulla. Mi manca qualcosa di permesso saggio?

L'ho eseguito dal mio computer connesso come me stesso e da un altro computer connesso come un altro utente. Entrambi gli account hanno il pieno controllo della directory che contiene i file XML.

Sto usando .NET 2.0.

   static void Main(string[] args) {
        string directory, ext = ".xml"; // have tried xml and .xml

        if (args.Length != 1) {
             // do absolutely nothing if we do not exactly 1 argument
        } else {
            Console.WriteLine("Argument accepted.");
            directory = args[0];

            // make sure the directory passed is valid
            if (ValidateDirectory(directory)) {
                Console.WriteLine("Directory is valid.");
                DeleteFiles(directory, ext);
            }
        }
        Console.WriteLine("Done.");
    }

    static bool ValidateDirectory(string d) {
        return Regex.IsMatch(d, @""); // I removed my regex - it validates properly
    }

    static void DeleteFiles(string d, string ext) {
        DirectoryInfo di;
        FileInfo[] fi;

        di = new DirectoryInfo(d);
        fi = di.GetFiles(ext);

        Console.WriteLine("Number of files = " + fi.Length + ".");
        foreach (FileInfo f in fi) {
            try {
                Console.WriteLine(f.FullName);
                f.Delete();
            } catch (Exception ex) {
                // do nothing when there is an exception
                // just do not want it to quit
                Console.WriteLine(ex.ToString());
            }
        }
    }
È stato utile?

Soluzione

Penso che dovresti usare * .xml anziché semplicemente .xml. Ma concordo anche con Kyralessa, test prima sul tuo computer locale, quindi aggiungi la complessità di passare attraverso una rete.

Altri suggerimenti

in DeleteFiles, hai la seguente riga:

fi = di.GetFiles (ext);

dove ext è l'estensione che passi, che credo sia solo '.xml'. Ottieni file sta cercando tutti i file chiamati '.xml'. GetFiles prende i caratteri jolly, che credo sia ciò che intendi fare. Metti un asterisco (*) in primo piano e provalo.

-Brett

Follow-up:

Avevo bisogno di usare * .xml (avrei dovuto saperlo!) e ora funziona.

Questo sito è fantastico!

Suppongo che stai passando un percorso di rete? Non riesce quando si esegue il programma su un percorso locale? Questa linea: fi = di.GetFiles (ext); Restituire eventuali oggetti fileInfo?

Probabilmente hai solo qualcosa di piccolo che può essere corretto da un debug.

Cosa stai passando come argomento? Stai utilizzando un'unità mappata o il riferimento diretto (ad esempio // server / cartella)?

Invece di ValidateDirectory, dovresti usare Directory.Exists (directory) solo per vedere se riesce a vedere la directory.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top