Pregunta

Estoy tratando de eliminar un directorio que contiene archivos XML de una computadora remota. Mi código se compila y funciona bien, pero cuando voy a obtener una lista de archivos XML en la ruta que especifico, no devuelve nada. ¿Me estoy perdiendo algo sabio permiso?

Lo ejecuté desde mi computadora que inició sesión como yo y desde otra computadora que inició sesión como un usuario diferente. Ambas cuentas tienen control total sobre el directorio que contiene los archivos XML.

Estoy 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());
            }
        }
    }
¿Fue útil?

Solución

Creo que deberías usar * .xml en lugar de simplemente .xml. Pero también estoy de acuerdo con Kyralessa, primero pruebe en su máquina local, luego agregue la complejidad de cruzar una red.

Otros consejos

en DeleteFiles, tiene la siguiente línea:

fi = di.GetFiles (ext);

donde ext es la extensión que pasa, que creo que es solo '.xml'. Get files está buscando cualquier archivo llamado '.xml'. GetFiles toma comodines, que creo que es lo que pretendes hacer. Pon un asterisco (*) en el frente y pruébalo.

-Brett

Seguimiento:

Necesitaba usar * .xml (¡debería haberlo sabido!) y ahora funciona.

¡Este sitio es genial!

¿Asumo que estás pasando por una ruta de red? ¿Falla cuando ejecuta el programa en una ruta local? ¿Esta línea: fi = di.GetFiles (ext); ¿Devuelve algún objeto fileInfo?

Probablemente solo tiene algo pequeño que puede solucionarse mediante alguna depuración.

¿Qué estás pasando como argumento? ¿Está utilizando una unidad asignada o la referencia directa (es decir, // servidor / carpeta)?

En lugar de su ValidateDirectory, debe usar Directory.Exists (directorio) solo para ver si puede ver el directorio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top