Supongo que mi título no es tan claro.C# - FileStream: ambos bloquean un archivo y, al mismo tiempo, pueden leerlo sin truncarlo y escribirlo truncándolo
Voy a tratar de explicar:
puedo escribir y leer un archivo mediante un FileStream
FileStream fs = new FileStream("C:\\Users\\Public\\text.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
private void button1_Click(object sender, EventArgs e)
{
fs.Seek(0,0);
StreamReader sr = new StreamReader(fs);
textbox.Text = sr.ReadToEnd();
}
private void button2_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(fs);
sw.Write(textbox.Text);
sw.Flush();
}
De esta manera otros programas no pueden utilizar el archivo, pero tampoco puedo eliminar contenido. Escribir solo agrega la cadena, no reemplaza el contenido.
O puedo hacerlo sin un FileStream:
private void button1_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader("C:\\Users\\Public\\text.txt");
textBox1.Text = sr.ReadToEnd();
sr.Close();
}
private void button2_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter("C:\\Users\\Public\\text.txt", false);
sw.Write(textBox1.Text);
sw.Close();
}
De esta manera, el contenido del archivo se sustituye, pero no tiene ningún bloqueo en los archivos.
Pero quiero ambos. ¿Cuál es la solución?
Truncar con FileStream.SetLength() –