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 #.

Daren Thomas
fonte

Respostas:

303

Usar:

File.Exists(path)

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

Editar: No System.IO

Daniel Jennings
fonte
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
53

System.IO.File :

using System.IO;

if (File.Exists(path)) 
{
    Console.WriteLine("file exists");
} 
Peter Hoffmann
fonte
25

System.IO.File.Exists (caminho)

msdn

pirho
fonte
4

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

 return File.Exists(FinalPath);
shivi
fonte