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]);
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]);
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é...
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 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.