Usuário com melhor resposta
Criar pasta em (C:\MEU_PROGRAMA\).

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!
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
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
-
-
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.
-
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?