Le dossier est-il vide?

Comment puis-je vérifier si un fichier est vide en C #?

besoin de quelque chose comme:

if (file is empty) { //do stuff } else { //do other stuff } 

Utilisez FileInfo.Length :

 if( new FileInfo( "file" ).Length == 0 ) { // empty } 

Vérifiez la propriété Exists pour savoir si le fichier existe.

Le problème ici est que le système de fichiers est volatile. Considérer:

 if (new FileInfo(name).Length > 0) { //another process or the user changes or even deletes the file right here // More code that assumes and existing, empty file } else { } 

Cela peut arriver et ça arrive. Généralement, pour gérer les scénarios file-io, vous devez repenser le processus pour utiliser des blocs d’exceptions, puis consacrer votre temps de développement à l’écriture de bons gestionnaires d’exceptions.

  if (!File.Exists(FILE_NAME)) { Console.WriteLine("{0} does not exist.", FILE_NAME); return; } if (new FileInfo(FILE_NAME).Length == 0) { Console.WriteLine("{0} is empty", FILE_NAME); return; } 

J’ai constaté que la vérification du champ FileInfo.Length ne fonctionnait pas toujours pour certains fichiers. Par exemple, un fichier .pkgdef vide a une longueur de 3. Par conséquent, je devais réellement lire tout le contenu du fichier et indiquer si celui-ci était égal à une chaîne vide.

Et si le fichier contient de l’espace? FileInfo("file").Length est égale à 2.
Mais je pense que ce fichier est également vide (n’a aucun contenu sauf des espaces (ou des sauts de ligne)).

J’ai utilisé quelque chose comme ça, mais est-ce que quelqu’un a une meilleure idée?
Peut aider à quelqu’un.

 ssortingng file = "file.csv"; var fi = new FileInfo(file); if (fi.Length == 0 || (fi.Length < 100000 && !File.ReadAllLines(file) .Where(l => !Ssortingng.IsNullOrEmpty(l.Trim())).Any())) { //empty file } 

En plus de la réponse de @tanascius, vous pouvez utiliser

 try { if (new FileInfo("your.file").Length == 0) { //Write into file, i guess } } catch (FileNotFoundException e) { //Do anything with exception } 

Et cela ne le fera que si le fichier existe. Dans l’instruction catch, vous pouvez créer un fichier et exécuter le code agin.

Voici comment j’ai résolu le problème. Il vérifiera d’abord si le fichier existe, puis vérifiera sa longueur. Je considérerais qu’un fichier inexistant est effectivement vide.

 var info = new FileInfo(filename); if ((!info.Exists) || info.Length == 0) { // file is empty or non-existant } 
  //You can use this function, if your file exists as content, and is always copied to your debug/release directory. ///  /// Include a '/' before your filename, and ensure you include the file extension, ex. "/myFile.txt" ///  ///  /// True if it is empty, false if it is not empty private Boolean CheckIfFileIsEmpty(ssortingng filename) { var fileToTest = new FileInfo(Environment.CurrentDirectory + filename); return fileToTest.Length == 0; }