Fichier.OpenWrite ajoute au lieu d'effacer le contenu?
J'ai été en utilisant les éléments suivants pour écrire dans un fichier:
using(Stream FileStream = File.OpenWrite(FileName))
FileStream.Write(Contents, 0, Contents.Length);
J'ai remarqué que c'était tout simplement l'écriture dans le fichier fichier correctement, mais ne pas effacer le contenu du fichier. J'ai alors décidé de tout simplement utiliser:
File.WriteAllBytes(FileName, Contents);
Cela a bien fonctionné.
Cependant, pourquoi ne pas le Fichier.OpenWrite supprimer automatiquement le contenu du fichier, comme les autres langues que j'ai utilisé pour leur OpenWrite style de la fonction, et ont une place de ajoutant?
Est il une méthode pour faire cela?
- vous pouvez toujours utiliser les msdn.microsoft.com/en-us/library/5h0z48dh.aspx
Vous devez vous connecter pour publier un commentaire.
C'est le comportement spécifié pour Fichier.OpenWrite:
De faire ce que vous êtes après, il suffit de faire:
Votre appel en cours est équivalent à utiliser FileMode.OpenOrCreate, qui ne provoque pas de troncature d'un fichier existant.
La FileMode.Créer option sera la cause de la méthode de Fichiers pour créer un nouveau fichier si il n'existe pas, ou utiliser FileMode.Tronquer si elle le fait, vous donnant l'effet désiré. Alternativement, vous pouvez utiliser Fichier.Créer pour ce faire directement.
Oui, vous avez raison. Fichier.OpenWrite ne pas écraser le fichier.
La Fichier.Créer est utilisé pour écraser le fichier s'il existe.
File.Open(<filename>, FileMode.Create, FileAccess.Write)
en option, vous pouvez utiliser le 4e argument pour déterminer quel type de verrou exclusif, si vous en souhaitez sur le fichier. Par défaut, vous n'aurez même pas être en mesure d'ouvrir le fichier pour le lire dans un autre programme. E. g.File.Open(<filename>, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)