c# - rapido - cómo eliminar todas las publicaciones de facebook de una sola vez
File.OpenWrite se agrega en lugar de borrar los contenidos? (2)
Estaba usando lo siguiente para escribir en un archivo:
using(Stream FileStream = File.OpenWrite(FileName))
FileStream.Write(Contents, 0, Contents.Length);
Noté que simplemente estaba escribiendo en el archivo de archivo correctamente, pero no borré primero el contenido del archivo. Entonces decidí simplemente usar:
File.WriteAllBytes(FileName, Contents);
Esto funcionó bien.
Sin embargo, ¿por qué File.OpenWrite no elimina automáticamente el contenido del archivo como otros lenguajes que he usado para su función de estilo OpenWrite, y tiene un en lugar de agregarlo?
¿Hay algún método para hacer esto?
Este es el comportamiento especificado para File.OpenWrite :
Si el archivo existe, se abre para escribir al principio. El archivo existente no está truncado.
Para hacer lo que buscas, solo hazlo:
using(Stream fileStream = File.Open(FileName, FileMode.Create))
fileStream.Write(Contents, 0, Contents.Length);
Su llamada actual es equivalente a usar FileMode.OpenOrCreate, que no causa el truncamiento de un archivo existente.
La opción FileMode.Create hará que el método File cree un nuevo archivo si no existe, o use FileMode.Truncate si lo hace, dándole el comportamiento deseado. Alternativamente, puede usar File.Create para hacer esto directamente.
Sí, tiene usted razón. File.OpenWrite no sobrescribe el archivo.
File.Create se utiliza para sobrescribir el archivo si existe.