Como descobrir se existe um arquivo em C # / .NET?


186

Eu gostaria de testar uma string contendo um caminho para um arquivo para a existência desse arquivo (algo como o -eteste em Perl ou os.path.exists()em Python) em C #.

Respostas:


303

Usar:

File.Exists(path)

MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

Editar: No System.IO


14
File.Exists (path) retorna false, mesmo que o arquivo exista, mas o chamador não tem permissão para lê-lo. Existe uma maneira diferente de lidar com esse tipo de situação e verificar se existe um arquivo, mesmo que o chamador não possa lê-lo?
ADTC

3
@ADTC: do ponto de vista da segurança, parece normal que funcione dessa maneira; do ponto de vista do desenvolvedor, isso pode tornar as coisas mais complicadas. Você recebe uma exceção nesse caso se tentar criar um arquivo?
user276648

2
O @ADTC simplesmente tropeçou e pensou que eu poderia mencionar diretórios de caixas suspensas. Esses podem ser configurados onde você tem permissão para criar ou gravar, mas não tem permissão de leitura. Não que seja relevante diretamente para essa pergunta, apenas que elas não são tão estranhas quanto se possa imaginar.
Ukko

1
Nota lateral: File.Exists retorna False na unidade de fluxo de arquivos G: do Google Drive, se o revestimento do caminho não corresponder exatamente ao que está realmente no G :. Normalmente, em qualquer invólucro de unidade física não importa, então eu me pergunto, há algo errado com o método Exists?
CTZStef

1
@CTZStef é a peculiaridade da unidade virtual do google, e não do método de estrutura.
Eugene Mayevski 'Callback



4

Dê o caminho completo como entrada. Evite caminhos relativos.

 return File.Exists(FinalPath);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.