Frage

Ich versuche, ein Verzeichnis zu löschen, die XML-Dateien von einem Remote-Computer enthält. Mein Code kompiliert und läuft gut, aber wenn ich eine Liste von XML-Dateien in dem Pfad zu bekommen ich angeben, es wird nichts zurück. Fehle ich etwas Erlaubnis klug?

Ich lief habe es von meinem Computer als mich angemeldet und von einem anderen Computer als ein anderer Benutzer angemeldet ist. Beiden Konten haben die volle Kontrolle über das Verzeichnis, das die XML-Dateien enthält.

Ich bin mit .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());
            }
        }
    }
War es hilfreich?

Lösung

Ich denke, Sie sollten * .xml verwenden, anstatt einfach .xml. Aber ich stimme auch mit Kyralessa, Test auf Ihrem lokalen Rechner zuerst, dann fügen Sie in der Komplexität über ein Netzwerk zu gehen.

Andere Tipps

in DeleteFiles, Sie haben die folgende Zeile:

fi = di.GetFiles (ext);

wo ext ist die Erweiterung, die Sie in übergeben, die ich glaube, ist nur ‚.xml‘. Holen Sie Dateien sucht nach Dateien namens ‚.xml‘. GetFiles nimmt Platzhalter, die meiner Meinung nach ist das, was Sie zu tun beabsichtigen. Setzen Sie ein Sternchen (*) an der Vorderseite und gibt, dass ein Versuch.

-Brett

Follow-up:

I * .xml verwenden benötigt (soll das wissen!) Und jetzt funktioniert es.

Diese Seite ist groß!

Ich nehme an, Sie in einem Netzwerkpfad sind vorbei? Ist es fehlschlagen, wenn Sie das Programm auf einem lokalen Pfad laufen? Ist diese Zeile: fi = di.GetFiles (ext); Rückkehr alle Objekte fileinfo?

Sie haben wahrscheinlich nur etwas klein falsch, die von einigen Debuggen festgelegt werden kann.

Was sind vorbei Sie als Argument in? Sind Sie ein zugeordnetes Laufwerk oder die direkte Referenz verwendet (d // server / Ordner)?

Statt Ihre ValidateDirectory, sollten Sie Directory.Exists (Verzeichnis) verwenden nur um zu sehen, ob es überhaupt das Verzeichnis sehen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top