0
ファイルがロックされている間、ファイルの内容を読み込んで上書きする必要があります。私は、ファイルを読み書き操作の間にロックを解除したくない。どのようにファイルをロックし、その内容を読み、それを上書きしますか?
using (var file = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
{
using (var reader = new StreamReader(file, Encoding.Unicode))
using (var writer = new StreamWriter(file, Encoding.Unicode))
{
// read
// calculate new content
// overwrite - how do I do this???
}
}
私は2つのFileStream
Sを使用している場合は、ライターのインスタンスを作成する際に、ファイルが消去されますが、ファイルが簡単にリーダライタのインスタンス間でロックが解除されます。
using (var reader = new StreamReader(new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)))
{
// read
// calculate new content
}
using (var writer = new StreamWriter(new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)))
{
// write
}
をleaveOpenとのctorのは、その前に利用できないので、これは、V4.5への依存を取ります。 –
迅速な回答ありがとうございます! –
この問題を解決するために新しいleaveOpenパラメータを使用する理由はありません。ファイルを読み込み/書き込みとして開くだけで十分です。リーダーとライターの両方を同時に作成することができます。基本的なストリームの長さは、読み込み後、書き込み前に設定されます。 –