Usuário com melhor resposta
Verificar se é arquivo ou pasta

Pergunta
-
Respostas
-
Boa tarde Edinator.
Eu não conheço algo que indique isso diretamente. Dessa forma, para solucionar o seu problema eu faria o seguinte:
1 - Verifico se o path é relacionado a um diretório
2 - Se não for um diretório, verifico se é um arquivo
3 - Se não for um arquivo, eu sei que o path informado é inexistente.
Eu criei uma Console Application que segue esses três passos.
static void Main(string[] args) { String caminho = @"c:\a.txt"; //Verifica se é um diretório if (Directory.Exists(caminho)) { Console.WriteLine("Diretório"); Console.Read(); return; } //Verifica se é um arquivo if (File.Exists(caminho)) { Console.WriteLine("Arquivo"); Console.Read(); return; } //Caminho não encontrado Console.WriteLine("caminho inexistente"); Console.Read(); }
Abraço.- Marcado como Resposta Edinator sexta-feira, 13 de novembro de 2009 10:47
Todas as Respostas
-
Boa tarde Edinator.
Eu não conheço algo que indique isso diretamente. Dessa forma, para solucionar o seu problema eu faria o seguinte:
1 - Verifico se o path é relacionado a um diretório
2 - Se não for um diretório, verifico se é um arquivo
3 - Se não for um arquivo, eu sei que o path informado é inexistente.
Eu criei uma Console Application que segue esses três passos.
static void Main(string[] args) { String caminho = @"c:\a.txt"; //Verifica se é um diretório if (Directory.Exists(caminho)) { Console.WriteLine("Diretório"); Console.Read(); return; } //Verifica se é um arquivo if (File.Exists(caminho)) { Console.WriteLine("Arquivo"); Console.Read(); return; } //Caminho não encontrado Console.WriteLine("caminho inexistente"); Console.Read(); }
Abraço.- Marcado como Resposta Edinator sexta-feira, 13 de novembro de 2009 10:47
-
Edinator,
Você pode utilizar o seguinte método:
System.IO.Path.HasExtension(String path)
Esse método retornará true caso o caminho passado contiver uma extensão, ou seja, quando o path for de um arquivo.
Contudo, ele retornará false não só para diretórios, mas também para arquivos que não contenham extensão.
Espero ter ajudado.
Abraço- Editado Cleverson Nascimento quinta-feira, 12 de novembro de 2009 16:48 correção de código
-
Cleverson, boa tarde.
Então, eu até tinha pensado nisso em primeiro quando eu li essa Thread, mas como é possível ter um arquivo sem extensão alguma, isso pode ser perigoso.
O método HasExtension não verifica a existência de um arquivo em disco.
Se eu fizer por exemplo:
String caminho = @"abcd.efg"; Console.WriteLine(Path.HasExtension(caminho));
Esse método retorna true, mesmo esse arquivo não existindo em disco.
E se no lugar eu passar simplesmente "abcd", ele retornará false por não ter nenhuma extensão, mesmo eu querendo um arquivo que não tenha extensão. Embora isso não faça muito sentido, devemos evitar certas coisas, pois não sabemos a intenção da pessoa que opera o aplicativo.
Abraço. -
Leandro,
Você tem toda a razão.
Eu apenas postei esse código levando ao pé da letra a questão colocada pelo Edinator, pois ele não citou verificação da existência do arquivo, apenas a identificação.
Porém, se eu tivesse a necessidade de uma forma mais completa, certamente utilizaria a que você postou anteriormente.
Abraço -
Edinator,
Para verificar se um caminho é um arquivo ou pasta, utilize o código abaixo:
// caminho
string path = @"c:\temp\overview_map.png";
// atributos
FileAttributes fa = File.GetAttributes(path);
// verifica se é uma pasta ou arquivo
if ((fa & FileAttributes.Directory) == FileAttributes.Directory)
Console.WriteLine("{0} é uma pasta.", path);
else
Console.WriteLine("{0} é um arquivo.", path);
Obs: Esse código não verifica se o caminho é válido.
Att.
Ari C. Raimundo- Sugerido como Resposta JobaDiniz terça-feira, 24 de novembro de 2009 00:09
-
Pessoal, bom dia!
Obrigado pelas respostas!
Por uma falha minha, esqueci de informar que precisaria verificar arquivos sem extensão tbm, então a resposta que o Leandro mencionou foi a que me ajudou a resolver a questão.
Muito obrigado mesmo e estou a disposição se precisarem!
Um grande abraço!
Fuiiiiiiiiiiii...