Suppongo che il mio titolo non sia chiaro.C# - FileStream: entrambi bloccano un file e allo stesso tempo sono in grado di leggerlo senza troncarlo e scriverlo con il troncamento di esso
Cercherò di spiegare:
posso scrivere e leggere un file utilizzando 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();
}
In questo modo altri programmi non possono utilizzare il file, ma anche io non riesco a cancellare soddisfare. Scrivendo solo aggiunge la stringa, non sostituisce il contenuto.
Oppure posso farlo senza 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();
}
In questo modo, il contenuto del file viene sostituito, ma non ha nessun blocco sui file.
Ma io voglio entrambi. Qual'è la soluzione?
Tronca con FileStream.SetLength() –