ho bisogno di manipolare il contenuto di un file:C# file di sovrascrittura con StreamWriter creato da FileStream
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
StreamReader sr = new StreamReader(fs);
StreamWriter sw = new StreamWriter(fs);
newString = someStringTransformation(sr.ReadToEnd());
sw.Write(newString);
fs.flush();
fs.Close();
Tuttavia quanto sopra aggiunge i newString invece di sovrascrivere il file con le nuove modifiche. Deve essere fatto in modo che nessun'altra applicazione possa accedere al file tra la lettura di una scrittura e questo è il motivo per cui sto creando il lettore e il writer da un oggetto FileStream.
So che è possibile creare uno StreanWriter con il secondo parametro impostato su false come descritto here. Tuttavia, quando si crea StreamWriter come sopra, questo non sembra essere uno dei parametri.
Prova il lavaggio del torrente e riposizionamento indietro all'inizio del file, quindi scrivere, quindi lavare lo scrittore, quindi troncare il file. –
Un altro modo è creare un altro file temporaneo, salvare tutti i nuovi contenuti in quel file, quindi eliminare quello vecchio e rinominare quello nuovo. –
Quello che stai cercando di fare non ha senso, non hai alcuna protezione contro un altro processo che legge il file un microsecondo prima di aprire il file. –