none
Criar pasta em (C:\MEU_PROGRAMA\). RRS feed

  • Pergunta

  • Bom dia pessoal,

    Estou tentando criar uma pasta, dentro de uma pasta que está na minha unidade C:, porém ao tentar criar a pasta, me é retornado a seguinte mensagem de erro: "Não foi possível localizar uma parte do caminho 'D:\MEU_PROGRAMA\Backup_sql\'."

    Vale lembrar que faço um modo de verificação, que faz a verificação para ver onde a pasta está instalada,

     string Backup_sqlC = @"C:\MEU_PROGRAMA\Backup_sql\";
                string Backup_sqlD = @"D:\MEU_PROGRAMA\Backup_sql\";
                string Backup_sqlE = @"E:\MEU_PROGRAMA\Backup_sql\";
                string Backup_sqlF = @"F:\MEU_PROGRAMA\Backup_sql\";
                string Backup_sqlG = @"G:\MEU_PROGRAMA\Backup_sql\";
                string Backup_sqlH = @"H:\MEU_PROGRAMA\Backup_sql\";
    
                if (!Directory.Exists(Backup_sqlC))
                {
                    Directory.CreateDirectory(Backup_sqlC);
                }
                else if (!Directory.Exists(Backup_sqlD))
                {
                    Directory.CreateDirectory(Backup_sqlD);
                }
                else if (!Directory.Exists(Backup_sqlE))
                {
                    Directory.CreateDirectory(Backup_sqlE);
                }
                else if (!Directory.Exists(Backup_sqlF))
                {
                    Directory.CreateDirectory(Backup_sqlF);
                }
                else if (!Directory.Exists(Backup_sqlG))
                {
                    Directory.CreateDirectory(Backup_sqlG);
                }
                else if (!Directory.Exists(Backup_sqlH))
                {
                    Directory.CreateDirectory(Backup_sqlH);
                }
                else
                {
                    return;
                }

    Existe algum erro no meu código? não estou entendendo e preciso dessa função funcionando! Obrigado pessoal!

    Bom dia!

    terça-feira, 27 de setembro de 2016 12:32

Respostas

  • Existe unidade "D" nesse computador?

    Porque veja, ele executou o "CreateDirectory(Backup_sqlC)" perfeitamente, e veio dar erro no "D". Motivo? Não existe "D:" e assim sendo não é possível acessar "D:".

    Eu mudaria esse seu código para algo do gênero:

    const string BackupDir = "\\MEU_PROGRAMA\\Backup_Sql";
    for (int i = 0; i < 6; i++)
    {
        string Path = (char)('C' + i) + ":";
        if (Directory.Exists(Path) //o drive existe
        {
            Path += BackupDir;
            if (!Directory.Exists(Path)) { Directory.CreateDirectory(Path); }
        }
    }

    • Sugerido como Resposta SammuelMiranda terça-feira, 27 de setembro de 2016 12:51
    • Marcado como Resposta developer.training terça-feira, 27 de setembro de 2016 14:29
    terça-feira, 27 de setembro de 2016 12:50

Todas as Respostas

  • Existe unidade "D" nesse computador?

    Porque veja, ele executou o "CreateDirectory(Backup_sqlC)" perfeitamente, e veio dar erro no "D". Motivo? Não existe "D:" e assim sendo não é possível acessar "D:".

    Eu mudaria esse seu código para algo do gênero:

    const string BackupDir = "\\MEU_PROGRAMA\\Backup_Sql";
    for (int i = 0; i < 6; i++)
    {
        string Path = (char)('C' + i) + ":";
        if (Directory.Exists(Path) //o drive existe
        {
            Path += BackupDir;
            if (!Directory.Exists(Path)) { Directory.CreateDirectory(Path); }
        }
    }

    • Sugerido como Resposta SammuelMiranda terça-feira, 27 de setembro de 2016 12:51
    • Marcado como Resposta developer.training terça-feira, 27 de setembro de 2016 14:29
    terça-feira, 27 de setembro de 2016 12:50
  • Bom dia amigo,

    Esse código seu faz verificação se existe tal arquivos em qualquer unidade que esteja conectado e tenha o formato de LETRA + : = (A,B,C... + :), isso que eu entendi está correto, ou é outra situação? 

    terça-feira, 27 de setembro de 2016 12:57
  • sim, o primeiro passo "Path = (char)('C' + i)" é justamente, iniciando em "C" ele monta o Path "C:", depois no próximo loop (porque "char" somado a "int" retorna o "char" equivalente, ou seja, "C" = 67 no ASCII e "C" + 0 = 67 - "C" - depois "C" + 1 = 68 - "D" - e assim por diante).

    com esse path primeiro vamos verificar se ele existe, então se "Directory.Exists(Path)" onde path é "D:" (por exemplo) voltar falso, você não precisa criar o diretório porque é impossível criar DRIVERS; já se o drive existe, então procure a pasta, então verifique se ela existe, senão crie-a; é isso.

    quarta-feira, 28 de setembro de 2016 13:49
  • outra coisa,

    esse é um código simples, mas pode gerar um problema, por exemplo, como são 2 pastas o "CreateDirectory" pode não conseguir criar a subpasta ("backup_sql") se a principal não existir ("MEU_PROGRAMA").

    Então podemos fazer uma função ainda mais segura indo diretório a diretório.
    Primeiro verifica o drive, se ele existir continua, senão vá para o próximo drive.
    Depois vai pasta a pasta, verificar se "MEU_PROGRAMA" existe, senão cria; depois verificar se "Backup_Sql" existe, senão cria. Entendeu?

    quarta-feira, 28 de setembro de 2016 13:53