¿Cómo comprobar si existe un archivo en una carpeta?

112

Necesito verificar si existe un archivo xml en la carpeta.

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory);
FileInfo[] TXTFiles = di.GetFiles("*.xml");
if (TXTFiles.Length == 0)
{
    log.Info("no files present")
}

¿Es esta la mejor forma de comprobar que existe un archivo en la carpeta?

Necesito verificar que solo haya un archivo xml presente

user386258
fuente
2
¿Está buscando todos los archivos xml o el que tiene un nombre específico?
Piotr Auguscik
posible duplicado de ¿Cómo comprobar rápidamente si la carpeta está vacía (.NET)?
Shadow Wizard es Ear For You
5
Lo que necesita es justo Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()y eso es lo más rápido que puede obtener.
Shadow Wizard es Ear For You

Respuestas:

198

Esta es una forma de ver si existe algún archivo XML en esa carpeta, sí.

Para verificar archivos específicos, use File.Exists(path), que devolverá un booleano que indica si pathexiste el archivo .

CodeCaster
fuente
4
También puede usar la propiedad FileInfo.Exists
VMAtm
10
Noe que esta respuesta devuelve falso si el usuario no tiene permiso para leer el archivo. Por lo tanto, hace más que solo verificar si el archivo existe en una carpeta. Es posible que desee utilizar DirectoryInfo.GetFiles () y enumerar el resultado.
ogborstad
35

FileInfo.ExistsPropiedad de uso :

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory);
FileInfo[] TXTFiles = di.GetFiles("*.xml");
if (TXTFiles.Length == 0)
{
    log.Info("no files present")
}
foreach (var fi in TXTFiles)
    log.Info(fi.Exists);

o File.Existsmétodo:

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
VMAtm
fuente
5
Las clases DirectoryInfo y FileInfo son impresionantes. Ofrecen muchos métodos para lidiar con estas construcciones del sistema de archivos, exponen información en propiedades que son útiles cuando se vinculan a la interfaz de usuario y son serializables, por lo que puede usarlas en configuraciones.
29

Para comprobar que el archivo existe o no, puede utilizar

System.IO.File.Exists(path)
62071072SP
fuente
8

De esta manera podemos buscar un archivo existente en una carpeta en particular:

 string curFile = @"c:\temp\test.txt";  //Your path
 Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
Himansz
fuente
8

Como nadie dijo cómo verificar si el archivo existe Y obtener la carpeta actual en la que se encuentra el ejecutable (Directorio de trabajo) :

if (File.Exists(Directory.GetCurrentDirectory() + @"\YourFile.txt")) {
                //do stuff
}

El @"\YourFile.txt"no es sensible, lo que significa cosas como @"\YoUrFiLe.txt"y @"\YourFile.TXT"o @"\yOuRfILE.tXt"se interpreta de la misma.

Bennett Yeo
fuente
3

Se puede mejorar así:

if(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count == 0)
    log.Info("no files present")

Alternativamente:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present");
WonderWorker
fuente
1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}
Bhavin
fuente
2
Aunque este código podría (o no) resolver el problema, una buena respuesta siempre requiere una explicación sobre lo que hace este código. También tenga en cuenta que su respuesta no parece agregar nada nuevo. También debe formatear su muestra de código de manera adecuada y explicar qué localUploadDirectoryes o por qué su respuesta incluso se refiere a él.
BDL
0

Esto me ayudó:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false);
Adrita Sharma
fuente
4
(System.IO.File.Exists(filePath) ? true : false);es redundante System.IO.File.Exists(filePath);.
Naveen Niraula
2
En realidad, como el código de Adrita, ya que hace obvio lo que debe contener la variable, también es un excelente ejemplo de cómo aplicar la lógica a los programas de los estudiantes. Voy a incorporar eso en una lección. A veces, el código optimizado también tiene la mayor sobrecarga en mantenimiento y depuración
ScaryMinds
0

Esto funcionó para mí.

file_browse_path=C:\Users\Gunjan\Desktop\New folder\100x25Barcode.prn
  String path = @"" + file_browse_path.Text;

  if (!File.Exists(path))
             {
      MessageBox.Show("File not exits. Please enter valid path for the file.");
                return;
             }
poder radhason
fuente