Pergunta

Eu estou tentando excluir um diretório que contém os arquivos XML a partir de um computador remoto. Meu código compila e funciona muito bem, mas quando eu ir para obter uma lista de arquivos XML no caminho especifico, não está retornando nada. Estou faltando permissão algo sábio?

Eu corri-lo do meu computador conectado como a mim mesmo e de outro computador conectado como um usuário diferente. Ambas as contas têm controle total sobre o diretório que contém os arquivos XML.

Eu estou 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());
            }
        }
    }
Foi útil?

Solução

Eu acho que você deve estar usando .xml * em vez de simplesmente .xml. Mas eu também concordo com Kyralessa, teste em sua máquina local primeiro, em seguida, adicione na complexidade de ir através de uma rede.

Outras dicas

em DeleteFiles, você tem a seguinte linha:

fi = di.GetFiles (EXT);

onde ext é a extensão que você passar em, que eu acredito que é apenas '.xml'. Obter arquivos está procurando por quaisquer arquivos chamados '.xml'. GetFiles leva wildcards, que eu acredito é o que você está pretendendo fazer. Coloque um asterisco (*) na frente e dar um que tente.

-Brett

Acompanhamento:

eu precisava usar .xml * (deveria saber que!) E agora ele funciona.

Este site é ótimo!

Eu suponho que você está passando em um caminho de rede? Será que ela falhar quando você executar o programa em um caminho local? Será que esta linha: fi = di.GetFiles (EXT); Devolver qualquer fileInfo objetos?

Você provavelmente apenas tem algo pequeno mal que pode ser corrigido por alguma depuração.

O que você está passando como argumento? Você está usando uma unidade mapeada ou a referência direta (ou seja servidor / pasta //)?

Em vez de seu ValidateDirectory, você deve usar Directory.Exists (diretório) só para ver se ele pode ver o diretório em tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top