217 votes

Créer un fichier vide en C #

Quelle est la manière la plus simple / canonique de créer un fichier vide dans C # /. Net? Le moyen le plus simple que je puisse trouver jusqu'à présent:

 System.IO.File.WriteAllLines(filename, new string[0]);
 

436voto

Jon Skeet Points 692016

En utilisant seulement File.Create laissera le fichier ouvert, qui n'est probablement pas ce que vous voulez.

Vous pouvez utiliser:

using (File.Create(filename)) ;

Qui ressemble un peu étrange, vous l'esprit. Vous pourriez utiliser des accolades à la place:

using (File.Create(filename)) {}

Ou appelez Dispose directement:

File.Create(filename).Dispose();

De toute façon, si vous allez l'utiliser dans plus d'un endroit que vous devriez probablement envisager en l'enveloppant dans une méthode d'assistance, par exemple

public static void CreateEmptyFile(string filename)
{
    File.Create(filename).Dispose();
}

Noter que l'appel Dispose directement au lieu d'utiliser un using déclaration n'est pas vraiment beaucoup de différence ici, autant que je peux dire - la seule façon dont il pourrait faire une différence est que si le thread a été interrompu entre l'appel à l' File.Create , et l'appel d' Dispose. Si cette condition existe, je soupçonne il serait également exister dans l' using version, si le thread a été interrompu à la fin de l' File.Create méthode, juste avant que la valeur a été retourné...

41voto

Tamas Czinege Points 49277
 File.WriteAllText("path", String.Empty);
 

ou

 File.CreateText("path").Close();
 

22voto

Eoin Campbell Points 22861
 System.IO.File.Create(@"C:\Temp.txt");
 

Comme d’autres l’ont fait remarquer, vous devez vous débarrasser de cet objet ou l’emballer dans une instruction vide.

 using (System.IO.File.Create(@"C:\Temp.txt"));
 

4voto

umilmi81 Points 102

Vous pouvez enchaîner les méthodes de l'objet renvoyé pour pouvoir fermer immédiatement le fichier que vous venez d'ouvrir dans une seule instruction.

 File.Open("filename", FileMode.Create).Close();
 

2voto

aggieNick02 Points 194

Un peu commun de cas d'utilisation pour la création d'un fichier vide est de déclencher quelque chose d'autre qui se passe dans un processus différent en l'absence de la plus sophistiquée dans le processus de communication. Dans ce cas, il peut aider à la création d'un fichier atomique du monde extérieur, du point de vue (en particulier si la chose a été déclenché va supprimer le fichier "consommer" le déclencheur).

De sorte qu'il peut aider à créer une ordure nom (Guid.NewGuid.ToString()) dans le même répertoire que le fichier que vous souhaitez créer, puis faire un Fichier.Se déplacer à partir du nom temporaire à votre convenance. Sinon déclenché code qui vérifie d'existence du fichier et supprime ensuite le déclencheur peut s'exécuter dans des conditions de course où le fichier est supprimé avant qu'il soit complètement fermé.

Avoir le temp de fichier dans le même répertoire (et de système de fichiers) vous donne l'atomicité vous voulez. Cela donne quelque chose comme.

public void CreateEmptyFile(string path)
{
    string tempFilePath = Path.Combine(Path.GetDirectoryName(path),
        Guid.NewGuid.ToString());
    using (File.Create(tempFilePath)) {}
    File.Move(tempFilePath, path);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X